选择文件后取消焦点文件输入框(以验证输入)

Posted

技术标签:

【中文标题】选择文件后取消焦点文件输入框(以验证输入)【英文标题】:Un-focus file input box AFTER file got selected (to validate input) 【发布时间】:2021-04-16 00:59:13 【问题描述】:

我有一个带有文件输入框的引导表单,在提交之前会在客户端站点上检查有效扩展名。

<div class = "container", id="container">
<form id= "fileinput-form" action="/file" method="POST" >
  <div class="form-group col-md-4" >
   <input class="form-control" type="file" accept=".csv,.txt" name="inputfile" aria-label="file example">
  </div>
  <div style="margin-top:10px">
   <input class="btn btn-primary" id="submit-file" type="submit" value="Predict">
  </div>
</form>
</div> 

但是,验证只是在输入框未聚焦(或者更确切地说是通过单击某处)之后触发。不过,我希望在关闭 Windows 对话框(选择文件)后立即进行验证,而无需取消输入框的焦点。

$("#fileinput-form").validate(

      rules:
          inputfile: 
          required: true,
          extension: true
          
      ,
      messages:
          inputfile:
          required: "Please input a file."
          
      ,

 ););

我已经尝试添加onchange函数,没有任何成功...有什么解决办法吗?

$("#fileinput-form").on("change",function(e)  
     console.log('file changed'); 
     $("#fileinput-form").trigger('blur');
     /*$("hidden-input").focus();*/
);

【问题讨论】:

【参考方案1】:

对于可能也遇到该问题的任何人,这里有一个可以很好地完成工作的可行解决方案:

html 中添加一个空的div

&lt;div id="eventresponse"&gt; &lt;/div&gt;

将文本交给div

$("#inputfile").bind("change",function()
      $("#eventresponse").text("Input text here");
);

添加新样式

#eventresponse
  color: red;
  font-style: italic;
  

eventresponse 只会在 Windows 对话框关闭时触发并弹出。

注意: 由于我对 javascript 不太熟悉,因此我使用异步在服务器站点(flask)上实现了实际验证。接电话。当然,纯 javascript 有一个更简单的解决方案。

【讨论】:

以上是关于选择文件后取消焦点文件输入框(以验证输入)的主要内容,如果未能解决你的问题,请参考以下文章

angularJS textAngular输入框输入文字后失去焦点

JAVA GUI问题。如何触动按钮后弹出文件浏览器和文件名选择框,选择保存目录?

根据用户上传数据后选择的用户输入过滤数据框

关于js中事件监听的问题(文本框 回车键 失去焦点)

如何检测何时单击文件输入的取消?

jQuery验证插件清除IE中的文件输入值