簡體   English   中英

jQuery驗證程序繼續,即使未滿足所有規則

[英]jquery validator continues even though all rules have not been met

我有基本的html,想用jQuery驗證程序來驗證字段,所以我在php級別上的驗證較少。 表單會驗證所有字段是否為空,並阻止提交到php,但是一旦我完成1輸入表單匯總(即使所有其他字段均為空白)。 所有字段都是必填項,因此我很困惑-請幫助!

經過您的一些建議后,我已在php級別上重做了驗證,但效果完全相同。 如果所有字段均為空,則在提交表單時,只要填寫了1個字段,驗證就會生效。

jQuery:我通過JSLint運行它,但未產生任何錯誤-令人難以置信的對嗎?

$().ready(function () {
  "use strict";
  $('#register').validate({

rules: {
  firstname: {
    required: true,
    maxLength: 40
  },
  lastname: {
    required: true,
    maxLength: 40
  },
  email: {
    required: true,
    maxLength: 64,
    email: true
  },
  password: {
    required: true,
    minLength: 6,
    maxLength: 32
  },
  confirmPassword: {
    required: true,
    equalTo: "#password"
  },
  rsaid: {
    required: true,
    digits: true
  }
},

messages: {
  firstname: {
    required: "Please enter your first name.",
    maxLength: "Your first name cannot exceed 40 characters."
  },
  lastname: {
    required: "Please enter your last name.",
    maxLength: "Your last name cannot exceed 40 characters."
  },
  email: {
    required: "Please enter your email address.",
    maxLength: "Your email address cannot exceed 64 characters.",
    email: "The email format provided is invalid."
  },
  password: {
    required: "Please enter a password.",
    minLength: "Your password must contain at least 6 characters.",
    maxLength: "Your password cannot contain more than 32 characters."
  },
  confirmPassword: {
    required: "Please confirm your password.",
    equalTo: "Your passwords do not match!"
  },
  rsaid: {
    required: "Please enter a valid RSA id number.",
    //exactLength: "Your ID number must contain 13 characters!",
    digits: "Your ID number must consist of numerals only!"
  }
},

errorContainer: $('#errorContainer'),
errorLabelContainer: $('#errorContainer ul'),
wrapper: 'li'

});
});

html:應該沒有必要,但以防萬一:)

<div class="registrationForm">
        <form id="register" action="php/insert.php" method="post">
        <input type="text" id="firstname" name="firstname" placeholder="First Name" value="" class="radius mini" />
        <input type="text" id="lastname" name="lastname" placeholder="Last Name" value="" class="radius mini"/>
        <input type="text" id="email" name="email" placeholder="Your Email" value="" class="radius" />
        <input type="password" id="password" name="password" placeholder="New Password" value="" class="radius" />
        <input type="password" id="confirmPassword" name="confirmPassword" placeholder="Confirm Password" value="" class="radius" />
        <input type="text" id="rsaid" name="rsaid" placeholder="RSA ID Number" value="" class="radius" />
        <button class="radius title" name="signup">Sign Up for SFC</button>
    </form>
</div>

PHP代碼:由於密碼驗證時間長且不相關,因此僅包含前3個字段的代碼。 該代碼在phpcodechekcer.com上未返回任何錯誤。

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  if (empty($_POST["firstname"])) {
  $firstnameErr = "First name is required";
} else {
$firstname = mysqli_real_escape_string($link, $_POST['firstname']);
  }

 if (empty($_POST["lastname"])) {
  $lastnameErr = "Last name is required";
  } else {
  $lastname = mysqli_real_escape_string($link, $_POST['lastname']);
 }

  if (empty($_POST["email"])) {
   $emailErr = "Email address is required";
   } else {
  if (!isValidEmail($_POST["email"])) {
    $emailErr = "Email address is invalid";
   } else {
    $email = mysqli_real_escape_string($link, $_POST['email']);
   }
  }
 }

最好在服務器端進行驗證,如果您的客戶端在瀏覽器上關閉了javascript,則所有數據都將發送到服務器,而無需任何驗證

html標頭上需要jquery文件鏈接。

也許是因為您沒有使用字段集包圍? 另一方面,您可能希望進行簡單的HYML5驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM