Javascript 如何在文件输入取消时重新激活事件?

Javascript 如何在文件输入取消时重新激活事件?,javascript,jquery,Javascript,Jquery,因此,我有一个隐藏的文件输入,多次单击打开多个文件输入对话框。因此,我暂时禁用它们,如下所示: 点击: $("#file_input").click(); $(document).off(event, #parent_click); 成功时,在文件输入的change事件上 $(document).on(event, #parent_click, clickHandler); 然而!如果用户打开“文件”对话框,然后决定不执行任何操作,并单击“取消”,则将无法再次打开#parent_clickc

因此,我有一个隐藏的文件输入,多次单击打开多个文件输入对话框。因此,我暂时禁用它们,如下所示:

点击:

$("#file_input").click();
$(document).off(event, #parent_click);
成功时,在文件输入的
change
事件上

$(document).on(event, #parent_click, clickHandler);
然而!如果用户打开“文件”对话框,然后决定不执行任何操作,并单击“取消”,则将无法再次打开
#parent_click
clickHandler


如何更正此问题?

如果我正确获取了它,您可以在
.change()
上检查输入值,如果输入值为空,则不触发禁用

$('#yourInputId').change(function{
   if($('#yourInputId').val() == ''){
   //do some stuff
    } else {
   //do other stuff
   }
})
顺便说一句,下次你能提供一些小提琴吗?如果可能的话,用它找到解决方案会容易得多


更新工作

当用户选择“取消”时,
更改
事件也会触发。@putvande我看到的不是这个。。。想举个例子吗?我想你可能得破解它。当用户单击页面上的任意位置时,我会尝试重新启用处理程序。如果用户取消“文件输入”对话框,则不会发生这种情况@Louis93实际上它正在工作,添加了fiddle,当您选择文件时它会禁用按钮,当单击“取消”时它不会。@Good.luck当您单击“取消”时,OP会说它不工作。这是因为值没有改变。@JuanMendes好的,在本例中,您可以使用.live(),我只是告诉您执行操作的方法,而不是完整的解决方案。