我必须构建一个包含大量字段(可能超过 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/