Javascript 返回false被onsubmit忽略

Javascript 返回false被onsubmit忽略,javascript,php,jquery,Javascript,Php,Jquery,我花了一个小时在这上面,所以当我发现这只是一个在错误的地方引用的话或者其他什么的时候,我会很沮丧 我正在制作一个基本的HTML页面来测试一个基本的验证表单输入。如果我在validateForm()函数的开始处删除了return false,它将按预期工作。但是,如果它在验证循环中(如下所示),它将不起作用,表单将提交。(hello.php只输出hello world) 此处显示的所有诊断警报均按预期运行。。。包括返回前的一个错误。(当我将输入留空时) 我觉得我错过了一些非常明显的东西,但却不知道

我花了一个小时在这上面,所以当我发现这只是一个在错误的地方引用的话或者其他什么的时候,我会很沮丧

我正在制作一个基本的HTML页面来测试一个基本的验证表单输入。如果我在validateForm()函数的开始处删除了return false,它将按预期工作。但是,如果它在验证循环中(如下所示),它将不起作用,表单将提交。(hello.php只输出hello world)

此处显示的所有诊断警报均按预期运行。。。包括返回前的一个错误。(当我将输入留空时)

我觉得我错过了一些非常明显的东西,但却不知道是什么

<?php 
echo <<<END
<html>
 <head>
 <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
  <title>Test</title>

   <script type="text/javascript">
$(document).ready(function(){
  $("input").focus(function(){
    $(this).css("background-color","#cccccc");
  });
  $("input").blur(function(){
        $(this).css("background-color","#ffffff");
  });
});

function validateForm() {
    alert("Validating");    
    $("form[name=queryForm]").find(":input[type=text]").each(function() {
        alert("Checking " + $(this).attr('name'));
        if($(this).val()==null || $(this).val()=="") {
            $(this).val('REQUIRED');
            $(this).css("background-color","#ffbbbb");
            alert($(this).attr('name') + ' must not be left blank.');
            return false;
        }
    }); // end of the each function
}
</script>
 </head>
 <body>
<form name="queryForm" action="hello.php" onsubmit="return validateForm();" method="post">
<input type="text" name="First Name"><br>
<input type="text" name="Last Name">
<input type="submit" value="Submit">
</form>
 </body>
</html>
END;
?> 

应该是

find("input[type=text]")
另外,您可能希望返回在
之外设置的变量。每个

function validateForm() {
    var valid = true;
    alert("Validating");    
    $("form[name=queryForm]").find(":input[type=text]").each(function() {
        alert("Checking " + $(this).attr('name'));
        if($(this).val()==null || $(this).val()=="") {
            $(this).val('REQUIRED');
            $(this).css("background-color","#ffbbbb");
            alert($(this).attr('name') + ' must not be left blank.');
            valid = false;
        }
    }); // end of the each function
    //then return that variable
    return valid;
}

在.each()中使用return不会得到所需的结果

试试这个:

function validateForm() {
alert("Validating");    
var result = true;
   $("form[name=queryForm]").find(":input[type=text]").each(function() {
    alert("Checking " + $(this).attr('name'));
    if($(this).val()==null || $(this).val()=="") {
        $(this).val('REQUIRED');
        $(this).css("background-color","#ffbbbb");
        alert($(this).attr('name') + ' must not be left blank.');
        result =false;
        return false;   //break the each()
    }
}); // end of the each function
return result;
}

设置一个变量,并将其用作“end”函数之外的返回。但是为什么呢?“在.each()中使用return不会得到所需的结果。”为什么不呢?谢谢…@lowclawler return在each()中会调用each()的回调函数。返回false将破坏每个。
function validateForm() {
alert("Validating");    
var result = true;
   $("form[name=queryForm]").find(":input[type=text]").each(function() {
    alert("Checking " + $(this).attr('name'));
    if($(this).val()==null || $(this).val()=="") {
        $(this).val('REQUIRED');
        $(this).css("background-color","#ffbbbb");
        alert($(this).attr('name') + ' must not be left blank.');
        result =false;
        return false;   //break the each()
    }
}); // end of the each function
return result;
}