警告框没有停止表单的执行/提交

alert box not stopping execution/submission of the form

本文关键字:执行 提交 表单 警告      更新时间:2023-09-26

这是我使用的代码片段。在这里,按照我的期望,代码执行不会停止,表单被提交。虽然出现了警告框,但在按下"ok"后,表单被提交了。

$('.qto').each(function(index) {        
    if (jQuery.inArray($("#quota-" + (index + 1)).val(), quoatas) != -1) {
        alert("Please check the different values you have entered");
        return false;
    }
    quoatas.push($("#quota-" + (index + 1)).val());
});

问题是因为您的return false与它所包含的匿名函数相关,而不是表单的submit处理程序(我假设此代码包含在其中)。作为一种变通方法,您可以使用传递给提交处理程序的eventpreventDefault()方法。试试这个:

$('#myForm').submit(function(e) {
    $('.qto').each(function(index) {        
        if ($.inArray($("#quota-" + (index + 1)).val(), quoatas) != -1) {
            e.preventDefault(); // stop the form submission
            alert("Please check the different values you have entered");
        }
        quoatas.push($("#quota-" + (index + 1)).val());
    });
});
you can use preventDefault() to stop form submission

您可以简单地使用事件处理程序,它像这样绑定到表单,

<!doctype html>
<html>
<head>
  <title>Form Submit Handler</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p>Enter 'demo' as valid data: </p>
<form id="formId" action="javascript:alert( 'Value Valid. Form submitted.' );">
  <div>
    <input id="firstName" type="text">
    <input type="submit" value="Check">
  </div>
</form>
<p id="response" style="color:red;"></p>
 
<script>
$( "#formId" ).submit(function( event ) {
  if ( $( "#firstName" ).val() === "demo" ) {
    $( "#response" ).empty();
    $( "#response" ).text( "Submitted." ).show();
    return;
  }
  $( "#response" ).empty();
  $( "#response" ).append( "Not submitted." );
  event.preventDefault();
});
</script>
 
</body>
</html>