0

我正在制作这样的验证表格:

<form id="registerform" method="post" onsubmit=return checkformdata();>
    <input type="text" name="fname" value=""/>
    <input type="text" name="lname" value=""/>
    <input type="checkbox" name="privacy" value="1"/>
</form>

checkformdata()仅验证复选框字段的名字和姓氏,这是使用 jQuery 完成的。这是我尝试过的代码:

jQuery(document).ready(function() {
  // Handler for .ready() called.
  jQuery('#registerform').submit(function() {
    if (!jQuery("#privacy").is(":checked")) {
      alert("none checked");
      return false;
    }
  });
});

它也可以工作,但是警报字段出现两次,例如名字为空,然后出现名字警报和复选框警报。我想在checkformdata();之后显示复选框的警报;功能。是否可以优先考虑 javascript 然后 jquery 验证。

提前致谢。

4

1 回答 1

1

您应该只有一个功能,这是您使用的第二种方法。现在调用这两个函数,这不是您想要的。此外,您可以使用$而不是jQuery.

不要使用return false!除非你知道你在做什么。使用 preventDefault():

$('#registerform').submit(function(event) {
    var errorString = [];
    // START VALIDATION
    if ($("#privacy").is(":checked") ) {
        errorString.push("none checked"); // Save for later
    }
    if ($('[name="fname"]').val).length===0) {
        errorString.push("No firstname"); // Save for later
    }
    if ($('[name="lname"]').val).length===0) {
        errorString.push("No lastname"); // Save for later
    }

    // CHECK IF ERRORS ARE FOUND
    if( errorString.length !==0){
        event.preventDefault(); // stop the submitting
        // Do whatever you like with the string, for example;
        alert( "Something went wrong: \n"+errorString.join("\n") ); // alert with newlines 
    }
    // NO ERRORS FOUND, DO SOMETHING
    else{
        // all good. Do stuff now
    }

});
于 2013-08-22T13:59:00.363 回答