使用EasyUI加载服务端返回的数据时常用 $('#fm').form('load', row); 实现,既方便又简洁,但是,当Form中包含有FileBox时,代码就会报错,经过跟踪发现,因为EasyUI试图向隐藏的文件标签<input type="file">赋值,导致了错误。其源代码如下:
initValue: function(jq, _4d9) {
return jq.each(function() {
var _4da = $.data(this, "textbox");
_4da.options.value = "";
$(this).textbox("setText", _4d9);
_4da.textbox.find(".textbox-value").val(_4d9);
$(this).val(_4d9);
});
},
错误由 _4da.textbox.find(".textbox-value").val(_4d9); 这句导致的,故知需要把它改写一下,使其在处理文件标签时跳过该赋值过程即可。修改后的代码如下:
initValue: function(jq, _4d9) {
return jq.each(function() {
var _4da = $.data(this, "textbox");
_4da.options.value = "";
$(this).textbox("setText", _4d9);
var obj = _4da.textbox.find(".textbox-value");
if (obj.attr("type") != "file") {
obj.val(_4d9);
}
$(this).val(_4d9);
});
}
当然,若你这个页面仅仅是显示加载后的数据,那么没有什么问题,若你还可以再次提交,做Update操作,那么你得小心了,因为此时虽然页面上显示了文件的服务器路径,但是,最终实际提交到服务器的文件标签内并没有实际指向任何本地文件,故提交出去的文件是空的。