Javascript $(元素)。单击()即使在$(函数(){})内也不会触发

Javascript $(元素)。单击()即使在$(函数(){})内也不会触发,javascript,jquery,html,dropzone.js,Javascript,Jquery,Html,Dropzone.js,我有一个隐藏的输入元素(Dropzone),它写在原始html的主体中(没有附加) 什么也没发生。但是,如果我正在调用$(“#uploadProfileDropzone”)。在Chrome的控制台中单击(),它就会工作 可能是什么问题 编辑: 问题可能是我试图在Dropzone初始化之前调用该函数。有没有办法知道这种情况何时发生 然而,即使在尝试时: $(function() { setTimeout(function() { $('#uploadProfileDrop

我有一个隐藏的输入元素(Dropzone),它写在原始html的主体中(没有附加)

什么也没发生。但是,如果我正在调用
$(“#uploadProfileDropzone”)。在Chrome的控制台中单击()
,它就会工作

可能是什么问题

编辑

问题可能是我试图在Dropzone初始化之前调用该函数。有没有办法知道这种情况何时发生

然而,即使在尝试时:

$(function() {
    setTimeout(function() {
         $('#uploadProfileDropzone').click() 
    }, 5000)
})
在页面完全加载之后,仍然没有发生任何事情

解决方案


事实证明,某些(甚至大多数)浏览器会阻止此类活动。现在回想起来,原因很明显。我的意图是导航到一个页面,一旦准备好,就会打开一个文件对话框来执行概要文件上载操作。从用户体验的角度来看,阻止这样的行为在逻辑上似乎是正确的,因为它可能会导致网站的垃圾邮件和不受欢迎的活动。我通过在加载时显示一个简单的弹出框解决了这个问题,它强制用户按下按钮,然后调用
$(“#uploadProfileDropzone”)。单击()
,它就工作了。

您应该使用document ready事件(元素初始化后代码就工作了)


您可能有两种选择:

1) 以编程方式创建dropzone

Dropzone.autoDiscover=false;
让csvDropzone=newdropzone(#uploadProfileDropzone“{
参数名称:“文件”,
init:function(){
$('uploadProfileDropzone')。单击();
}
});


事实证明,某些(甚至大多数)浏览器会阻止此类活动。现在回想起来,原因很明显。我的意图是导航到一个页面,一旦准备好,就会打开一个文件对话框来执行概要文件上载操作。从用户体验的角度来看,阻止这样的行为在逻辑上似乎是正确的,因为它可能会导致网站的垃圾邮件和不受欢迎的活动。我通过在加载时显示一个简单的弹出框来解决这个问题,它强制用户按下一个按钮,然后依次调用
$(“#uploadProfileDropzone”)。单击()
,它就工作了。

这是一个表单,不是输入。对整个
使用单击处理程序是不常见的。您确定这与您有单击处理程序的元素相同吗?可能是在您调用
$(“#uploadProfileDropzone”)时,dropzone尚未初始化。单击()
是否需要提交
$(“#uploadProfileDropzone”).submit()
您确定dropzone之前已经初始化。单击()调用?@UFCInsider,不记得dropzone是否有此事件,但是我建议您只需通过编程方式初始化它,它将为您提供更多的总体控制。
$(函数(){…}
$(文档)的简写形式.ready(function(){…})
除上述内容外,OP正在启动click事件处理程序,而不是创建新的on,因此
.on
在此处完全不合适。尝试了两个选项后,可能都不起作用,您是否在其他浏览器中尝试过?是的,确实如此。我通过让用户在打开文件对话框之前单击一个按钮来解决这个问题
 $(function() {
      $('#uploadProfileDropzone').click()
 })
$(function() {
    setTimeout(function() {
         $('#uploadProfileDropzone').click() 
    }, 5000)
})
$(document).ready(function(){
     $('#uploadProfileDropzone').click(function(){
        // Do something here
    });
});
$('#uploadProfileDropzone').on('click',function(){ write your code here });