单击隐藏文件输入jQuery错误

时间:2014-07-01 08:17:08

标签: javascript jquery html css file-upload

我试图点击隐藏的输入file。我已经对它进行了测试here并且它运行良好。

在实际项目中,我收到此错误Uncaught RangeError: Maximum call stack size exceeded

这就是我所拥有的:

HTML:

<div id="upload-image-container" class="upload-image-container inline-block">
    <h2 class="inline-block">+ Upload Your Photo!</h2>
    <input type="file" name="images" id="images" />
</div>

jQuery的:

jQuery("#upload-image-container").click(function() {
    // e.preventDefault();
    jQuery("input[type='file']").click();
});

我已尝试添加e.preventDefulte.preventImmediatePropagation,但我仍然遇到同样的错误。

我不确定如何才能真正解决这个问题。

我在file输入上有一个监听器...图像会自动上传。不确定是否是造成问题的原因。我尝试删除它,我最终得到了相同的结果。

input.addEventListener("change", function (evt) {
        var i = 0, len = this.files.length, img, reader, file;

        for ( ; i < len; i++ ) {
            file = this.files[i];

            if (!!file.type.match(/image.*/)) {
                if ( window.FileReader ) {
                    reader = new FileReader();
                    reader.onloadend = function (e) { 
                        // showUploadedItem(e.target.result, file.fileName);
                        jQuery("#filename").val(file.name);
                    };
                    reader.readAsDataURL(file);
                }
                if (formdata) {
                    formdata.append("images[]", file);
                }
            }   
        }

        if (formdata) {
            jQuery.ajax({
                url: "upload.php",
                type: "POST",
                data: formdata,
                processData: false,
                contentType: false,
                success: function (res) {
                    // document.getElementById("response").innerHTML = res; 
                }
            });
        }
    }, false);

2 个答案:

答案 0 :(得分:5)

写这个,

jQuery("input[type='file']").click(function(e){
  e.stopPropagation();
});

由于孩子造成的事件传播,该错误正在提高。只是阻止它。

答案 1 :(得分:0)

如果我理解正确,则只有在单击h2标记时才需要触发点击事件。

在这种情况下,直接在h2标记中添加标识符。

 <h2 id="uploadTagId" class="inline-block">+ Upload Your Photo!</h2>

并在您的script.js中附加新标识符上的click事件。

    $("#uploadTagId").click(function(e){
     jQuery("input[type='file']").click();
  });