Javascript 在Internet Explorer中动态创建文件输入

Javascript 在Internet Explorer中动态创建文件输入,javascript,internet-explorer,file-upload,cross-browser,Javascript,Internet Explorer,File Upload,Cross Browser,单击“我的自定义”按钮后,下面的代码将动态创建一个文件输入,生成一个名为photo[]和id为photo'x(x作为变量)的文件输入。代码在除万能IE之外的所有浏览器上都运行良好。在IE中,我可以单击我的自定义上载按钮添加文件,当我提交表单时,文件输入将被清除。它将提交表单,但文件输入将为空。但它与其他浏览器配合得很好 这是虫子吗?还是保安的事?如果是,我如何解决此问题 var x = 0; addFile = function(addFileButton) { var form = d

单击“我的自定义”按钮后,下面的代码将动态创建一个文件输入,生成一个名为photo[]和id为photo'x(x作为变量)的文件输入。代码在除万能IE之外的所有浏览器上都运行良好。在IE中,我可以单击我的自定义上载按钮添加文件,当我提交表单时,文件输入将被清除。它将提交表单,但文件输入将为空。但它与其他浏览器配合得很好

这是虫子吗?还是保安的事?如果是,我如何解决此问题

var x = 0;
addFile = function(addFileButton) {
    var form = document.getElementById('form');
    var box = document.createElement('input');
    box.type = 'file';
    box.name = 'photo[]';
    box.id = 'photo' + x;
    box.style.cssText = 'position:absolute; top:-200px;';
    box.onchange = function() {
        checkFileDup(this.value, x - 1);
    };
    form.appendChild(box);
    jQuery("#photo" + x).trigger('click');
    x++;
}

这是IE的问题,通过javascript创建的输入[type=file]不能通过表单提交


我的解决方案是在页面中创建一组隐藏的输入[type=file]元素,并在需要时使它们可见。

您使用的
jQuery
仅用于触发
单击事件?是的,这会影响代码吗?这会使它更容易-仅此而已:)这是一个安全功能。为了解决这个问题,您需要添加box.onclick=function。。。在IE中的单击事件期间捕获文本,以便您可以在更改事件之前对其进行验证。@谢谢您的回复。事实上,我已经可以验证所有内容,但我唯一的问题是,当我提交表单时,文件输入会清除其内容,因此提交的文件会消失。解决这个问题有什么办法吗?如果box.onclick=函数?我应该在函数内部做什么?抱歉,我还是javascript和jquery的新手。谢谢