修正EasyUI的BUG——Form中存在FileBox时的数据载入错误

使用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的文件标签内并没有实际指向不论什么本地文件。故提交出去的文件是空的。



posted on 2017-06-14 10:56  blfbuaa  阅读(255)  评论(0编辑  收藏  举报