Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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,我有一个动态创建的表单,它附带了一个提交事件监听器,因此我可以执行一些ajax请求来保存数据 但我也希望在失去焦点时提交它 我调用了form.submit(),但忽略了先前创建的事件侦听器 form.addEventListener('submit', function (event_handler) { event_handler.preventDefault(); /* some code */ }); // if loses focus form.addEventList

我有一个动态创建的表单,它附带了一个提交事件监听器,因此我可以执行一些ajax请求来保存数据

但我也希望在失去焦点时提交它

我调用了
form.submit()
,但忽略了先前创建的事件侦听器

form.addEventListener('submit', function (event_handler) {
    event_handler.preventDefault();
    /* some code */
});

// if loses focus
form.addEventListener('blur', function (event) {
   form.submit(); // submits, but ignores the defined eventListener so the preventDefault() is ignored.
   return false;
}, true);
我希望form.submit()能够运行submit侦听器中定义的代码

有什么办法可以解决这个问题

没有jQuery或任何其他框架。只是香草js。

确实有问题。 调用JavaScript form.submit()时,它有时会覆盖事件侦听器。 简单的解决方案就是让提交者函数调用并调用它

 function runBeforeSubmit()
 {
     /* some code */
 }


 form.addEventListener('submit', function (event_handler) {
    event_handler.preventDefault();
    runBeforeSubmit(); <------------------------ shared code to process before submit
 });

 // if loses focus
 form.addEventListener('blur', function (event) {
   runBeforeSubmit(); <------------------------ shared code to process before submit
   form.submit();
   return false;
}, true);
函数runbeforesmit() { /*一些代码*/ } form.addEventListener('submit',函数(事件处理程序){ event_handler.preventDefault();
runBeforeSubmit();确实有效。我可以覆盖提交事件的js内置方法,但似乎有点过火。我希望有人知道一些技巧,而不必重复代码(虽然只是一行代码)。谢谢。答案已接受。