如何确定是否已单击文件输入?

时间:2014-09-13 21:06:04

标签: javascript angularjs

我有一个脚本会触发文件上传表单的click事件。我希望能够确定已经单击了文件上传按钮。这就是我所拥有的:

<div ng-click="uploadFile()">Click Me</div>
<input name="uploader" type="file" style="display:none;">

var uploadFile = function () {
    var interval = setInterval(function () {
        $('input[name=uploader]').trigger('click');
            clearInterval(interval);
    }, 50);
}

问题是上传按钮被触发两次。文件浏览器第一次打开时,允许我选择要上载的本地文件。但是,如果我点击取消,文件浏览器会再次打开。我想在上面的代码中放置一个条件来检查文件上传按钮是否已被触发。我怎样才能做到这一点?如下所示:

var interval = setInterval(function () {
    if(hasUploaderBeenTriggered === false) { // not sure how to do this part
        $('input[name=uploader]').trigger('click');
        clearInterval(interval);
    }
}, 50);

1 个答案:

答案 0 :(得分:-1)

您真的需要第一次点击,还是只想知道用户何时选择了他们的文件?否则你可以查看onchange而不是onclick。

您可以创建一个全局变量/布尔值,当用户单击该按钮时您可以打开和关闭它,如果用户再次单击该按钮,您可以检查布尔值是否为假。

var hasUploaderBeenTriggered = false;放在javascript的最顶部,然后在hasUploaderBeenTriggered = true;之后添加clearInterval(interval);,如下所示:

var hasUploaderBeenTriggered = false;

var interval = setInterval(function () {
    if(hasUploaderBeenTriggered === false) { // not sure how to do this part
        $('input[name=uploader]').trigger('click');
        clearInterval(interval);
        hasUploaderBeenTriggered = true;
    }
}, 50);