Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入[类型=“文件”]确定用户是否有';我没有选择任何文件_Javascript - Fatal编程技术网

Javascript 输入[类型=“文件”]确定用户是否有';我没有选择任何文件

Javascript 输入[类型=“文件”]确定用户是否有';我没有选择任何文件,javascript,Javascript,当用户单击输入[type=“file”]时,会显示一个选择文件的弹出窗口 用户可以选择一个,然后单击“确定”或单击“取消” 当他们点击OK时,这是一次更改事件,很好 取消时-没有活动或我不知道 所以问题是: 当用户单击“取消”时会触发什么事件,或者如何在单击“取消”后以不同方式确定未选择任何文件?只需检查文件选择器节点的文件属性的长度即可: const input = document.querySelector ('input[type="file"]') if(input.files.len

当用户单击输入[type=“file”]时,会显示一个选择文件的弹出窗口

用户可以选择一个,然后单击“确定”或单击“取消”

当他们点击OK时,这是一次更改事件,很好

取消时-没有活动或我不知道

所以问题是:


当用户单击“取消”时会触发什么事件,或者如何在单击“取消”后以不同方式确定未选择任何文件?

只需检查文件选择器节点的
文件
属性的
长度即可:

const input = document.querySelector ('input[type="file"]')
if(input.files.length === 0){
  //The user hasn't selected any files...
}
要检测更改,只需将事件侦听器添加到
change
事件:

const input = document.querySelector ('input[type="file"]')
input.addEventListener('change', ()=>{
  if(input.files.length === 0){
    //Cancel clicked
  } else {
    //The user selected some files just now
  }
})

只需检查文件选择器节点的
文件
属性的
长度

const input = document.querySelector ('input[type="file"]')
if(input.files.length === 0){
  //The user hasn't selected any files...
}
要检测更改,只需将事件侦听器添加到
change
事件:

const input = document.querySelector ('input[type="file"]')
input.addEventListener('change', ()=>{
  if(input.files.length === 0){
    //Cancel clicked
  } else {
    //The user selected some files just now
  }
})

当用户通过单击文件输入启动文件上载时,您可以将事件侦听器添加到浏览器窗口,以查看它何时重新获得焦点。由于系统对话框为阻塞/模式,因此只有在对话框关闭时,窗口才会重新获得焦点

在事件处理函数中,您可以检查输入的值是否更改。最后,删除焦点事件处理程序,使其不会从普通alt选项卡或窗口焦点事件触发:

file.addEventListener(“单击”),函数(){
window.onfocus=函数(){
log(“该窗口从文件输入对话框重新聚焦”);
如果(file.files.length==0){
log(“未添加任何文件”);
}否则{
log(“已添加文件”);
}
//移除处理程序
window.onfocus=null;
};
});

当用户通过单击文件输入启动文件上载时,您可以向浏览器窗口添加事件侦听器,以查看它何时重新获得焦点。由于系统对话框为阻塞/模式,因此只有在对话框关闭时,窗口才会重新获得焦点

在事件处理函数中,您可以检查输入的值是否更改。最后,删除焦点事件处理程序,使其不会从普通alt选项卡或窗口焦点事件触发:

file.addEventListener(“单击”),函数(){
window.onfocus=函数(){
log(“该窗口从文件输入对话框重新聚焦”);
如果(file.files.length==0){
log(“未添加任何文件”);
}否则{
log(“已添加文件”);
}
//移除处理程序
window.onfocus=null;
};
});

检查输入元素的
文件
属性并检查其长度。或者检查@ADyson的
是否可能重复?当用户单击取消时,我没有任何事件。在提交itI之前,在您验证表单时执行此操作可能有意义。我希望在触发模糊事件时执行此操作,但问题是,它在打开弹出窗口后立即触发,单击“取消”关闭输入元素后,请检查输入元素的
文件
属性并检查其长度。或者检查@ADyson的
是否可能重复?当用户单击取消时,我没有任何事件。在提交itI之前,在您验证表单时执行此操作可能是有意义的。我希望在模糊事件触发时执行此操作,但问题是它在打开弹出窗口后立即触发,而不是在您通过单击取消关闭弹出窗口后触发。我应该何时执行此操作?当用户单击取消时,我没有任何事件不幸的是,当您没有选择任何内容并单击取消(Chrome、MacOS)时,onChange事件不会触发,但我怀疑它的工作方式在任何地方都是一样的。我应该在什么时候这样做?当用户单击cancel时,我没有任何事件不幸的是,当您没有选择任何内容并单击cancel(Chrome、MacOS)时,onChange事件不会触发,但我怀疑它在任何地方都以相同的方式工作