Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.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 Can';事件发生后不提交表单_Javascript - Fatal编程技术网

Javascript Can';事件发生后不提交表单

Javascript Can';事件发生后不提交表单,javascript,Javascript,我有一个表单要使用PHP和javascript进行验证。 PHP端工作得很好。Javascript验证正确,但单击“提交”按钮时,表单将不会提交 我在表单元素中设置了onsubmit=“return validate(event);” 在validate(event)内部,第一行有event.preventDefault()。我已检查表单是否正确验证,表单是否被阻止提交 在验证(事件)结束时,如果没有错误,我将提交表单 我试过了 document.getElementById("checkout

我有一个表单要使用PHP和javascript进行验证。 PHP端工作得很好。Javascript验证正确,但单击“提交”按钮时,表单将不会提交

我在表单元素中设置了onsubmit=“return validate(event);”

在validate(event)内部,第一行有event.preventDefault()。我已检查表单是否正确验证,表单是否被阻止提交

在验证(事件)结束时,如果没有错误,我将提交表单

我试过了

document.getElementById("checkout").submit();

$('form').submit();

$('#checkout').unbind('submit').submit();

$('form')[0].submit();

$('#checkout').off('submit');
下面是相关代码位的摘要

<form method="post" action="thanks-order.php" id="checkout" name="checkout" onsubmit="return validate(event);">
...
<input type="hidden" name="flag">
<p><input type="submit" name="pay" value="Pay"></p>
...
</form>
<script>
function validate(event)
{
   //prevent form submission
   event.preventDefault();
   //reset error flag
   document.getElementsByName("flag")[0].value = "";

   //
   //form validation code
   //
   ...
   //if error flag is not set to "error"
   if(getFlag()=="")
   {
      //submit form
      //all of these doesn't work
      // document.getElementById("checkout").submit();
      // $('checkout').submit();
      // $('#checkout').unbind('submit').submit();
      // $('form')[0].submit();
      // $('#checkout').off('submit'); // then submit

   }
}
...
</script>

...

... 函数验证(事件) { //防止表格提交 event.preventDefault(); //重置错误标志 document.getElementsByName(“标志”)[0]。value=“”; // //表单验证代码 // ... //如果错误标志未设置为“错误” 如果(getFlag()==“”) { //提交表格 //所有这些都不起作用 //document.getElementById(“签出”).submit(); //$('checkout').submit(); //$(“#签出”).unbind('submit').submit(); //$('form')[0]。提交(); //$('#checkout')。关闭('submit');//然后提交 } } ...

单击“提交”按钮并出现错误时,将正确显示错误消息。但是,当没有错误时,表单提交不会影响将记录插入数据库(通过感谢order.php)。

当您在validate中无条件运行preventDefault时,无论提交是如何触发的,它都会阻止表单提交

只需连续运行preventDefault,如下所示:

function validate(event) {
   //reset error flag
   document.getElementsByName("flag")[0].value = "";

   //
   //form validation code
   //
   ...
   //if error flag is not set to "error"
   if(getFlag()=="") {
      //submit form
      //all of these doesn't work
      // document.getElementById("checkout").submit();
      // $('checkout').submit();
      // $('#checkout').unbind('submit').submit();
      // $('form')[0].submit();
      // $('#checkout').off('submit'); // then submit

   } else {
       //prevent form submission
       event.preventDefault();
   } 
}

当您在validate中无条件运行preventDefault时,无论提交是如何触发的,它都会阻止表单提交

只需连续运行preventDefault,如下所示:

function validate(event) {
   //reset error flag
   document.getElementsByName("flag")[0].value = "";

   //
   //form validation code
   //
   ...
   //if error flag is not set to "error"
   if(getFlag()=="") {
      //submit form
      //all of these doesn't work
      // document.getElementById("checkout").submit();
      // $('checkout').submit();
      // $('#checkout').unbind('submit').submit();
      // $('form')[0].submit();
      // $('#checkout').off('submit'); // then submit

   } else {
       //prevent form submission
       event.preventDefault();
   } 
}

这是因为在提交时总是
preventDefault
,所以调用submit不会在
if(getFlag()=“=”)
之后的else块中提交preventDefault,因为在提交时总是
preventDefault
,所以调用submit不会在
if(getFlag()=“=”)之后的else块中提交preventDefault