javascript - 失去焦点时提交表单

标签 javascript html

我必须构建一个包含大量字段(可能超过 1000 个字段)的表单。因为 recommended GET URL length limit我想将其拆分为几个较小的表单(每个表单有 12 个字段),在完成后提交。

基本上我正在寻找的是某种 form.onBlur 事件:我只想在以下情况下提交表单:

  • 其中一个输入失去焦点(模糊)
  • 此表单的其他输入都没有焦点

关于处理这个问题的好方法有什么想法吗?也许我需要让每个 input.onBlur 事件检查表单其他输入的当前焦点状态?

编辑:我很清楚 GET 与 POST 的区别,包括安全问题和数据量。对于我的特定设置的特定问题,GET 请求是唯一的选择;因此这个问题。

最佳答案

鉴于每个 form_element 都可以由一个类来标识,您可以用它来做一些有风格的事情

$(".form_element").on("focusout", function(){
  let do_query = true;
  setTimeout(function(){
     $(".form_element:input").each(function(){ 
       if($(this).is(":focus")){
         do_query = false;
         return false; //Exit the each loop
       }
     });

     if(do_query){
        console.log("I'm going to perform the query");
     }

  }, 200);
});

我发现如果没有设置超时,它总是会触发 false,因为新元素没有时间获得它的焦点。

参见 jsfiddle这里有工作示例

关于javascript - 失去焦点时提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54944595/

相关文章:

javascript - Node - this.func() 不是一个函数

javascript - Javascript 函数中 var 和 this 的区别?

javascript - 如何使选择框动态化

javascript - 最新版本中的 Ember.CollectionView API 是否有重大变化?

javascript - react 函数不返回任何值

javascript - 使用 jquery 时不显示 div

javascript - d3 排序仅适用于选择行

html - IE8 拉伸(stretch)表格单元格高度

javascript - jquery-ajax 请求被拒绝

html - 如何将 Disqus 评论计数器集成到 Bootstrap 按钮中?