使用JavaScript和jQuery进行表单验证

时间:2013-08-22 13:53:22

标签: javascript jquery html

我正在制作一个类似的验证表格:

<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;
    }
  });
});

它也在工作,但警报字段有两次,例如firstname为空,然后提醒名字和复选框警报出现。我想在 checkformdata(); 函数后显示复选框的警报。是否有可能首先为javascript提供优先级,然后是jquery验证。

先谢谢。

1 个答案:

答案 0 :(得分: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
    }

});