我有一个带有选择字段A的表单。此字段可以根据URL动态填充,也可以照常选择。
一旦在字段A中选择了一个值,选择字段B就会填充并使用JQuery AJAX公开。
这是问题所在。如果字段A保持不变,并且由URL动态填充,则字段B将正确验证。但是,如果更改了字段A,则字段B将不再尝试验证。
字段A
<select name="FieldA" id="FieldA">
<option value="">Please Select</option>
<?php
while($FieldA= mysql_fetch_array($result2)) {
?>
<option value="<?php echo $FieldA['FieldAID']; ?>"<?php if ($var == $FieldA['FieldAID']) echo " selected=\"selected\""; ?>><?php echo $FieldA['FieldAName']; ?> </option>
<?php } ?>
</select>
字段B
<select name="FieldB" id="FieldB">
<option value="">Please Select</option>
<?php
while($FieldB = mysql_fetch_array($result)) {
?>
<option value="<?php echo $FieldB['FieldBID']; ?>"><?php echo str_replace('|',' - ',$FieldB['FieldBName']); ?></option>
<?php } ?>
</select>
验证标准
<script language="JavaScript" type="text/javascript">
var frmvalidator = new Validator("FormName");
frmvalidator.addValidation("FieldA","req","Please select FieldA.");
frmvalidator.addValidation("FieldB","req","Please select FieldB.");
</script>
除了AJAX调用打破了字段B的验证之外,一切都有效。如果字段B没有重新填充,它可以正常工作。字段B由include文件构成,因此无论是由页面填充还是由AJAX调用填充它都是相同的。
谢谢!
答案 0 :(得分:0)
我想你正在使用这个js库: http://www.javascript-coder.com/html-form/javascript-form-validation.phtml
如果它给你带来很多问题,也许是时候改用更强大的验证库了。
我推荐这个:
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
出现在jquery网页上,它非常完整。语法或多或少是这样的:
$("#signupForm").validate({
rules: {
firstname: "required",
lastname: "required",
username: {
required: true,
minlength: 2
},
password: {
required: true,
minlength: 5
},
confirm_password: {
required: true,
minlength: 5,
equalTo: "#password"
},
email: {
required: true,
email: true
},
topic: {
required: "#newsletter:checked",
minlength: 2
},
agree: "required"
},
messages: {
firstname: "Please enter your firstname",
lastname: "Please enter your lastname",
username: {
required: "Please enter a username",
minlength: "Your username must consist of at least 2 characters"
},
password: {
required: "Please provide a password",
minlength: "Your password must be at least 5 characters long"
},
confirm_password: {
required: "Please provide a password",
minlength: "Your password must be at least 5 characters long",
equalTo: "Please enter the same password as above"
},
email: "Please enter a valid email address",
agree: "Please accept our policy"
}
});