使用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操作。那么你得小心了,由于此时尽管页面上显示了文件的server路径,可是。终于实际提交到server的文件标签内并没有实际指向不论什么本地文件。故提交出去的文件是空的。