【发布时间】:2015-01-28 07:55:21
【问题描述】:
我正在尝试显示/隐藏一个 div,然后在显示的 div 中进行验证,而不是验证隐藏的 div。
- 如果在无线电
id_question中选择了Yes,则显示divid="row_id_number"并验证。 - 如果在无线电
id_question中选择了No,则显示divid="row_contact_method"并验证。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/additional-methods.min.js"></script>
<script type="text/javascript">
$().ready(function() {
$("#id_frm").validate({
rules: {
"id_question": {
required: true
},
"id_number": {
required: true,
minlength: 10,
minlength: 10
},
"contact_method": {
required: true
}
},
messages: {
"id_question": {
required: "Please choose if you have an ID or not."
},
"id_number": {
required: "Please Enter ID."
},
"contact_method": {
required: "Please choose a contact method."
}
},
});
});
</script>
<style type="text/css">
.error {
color: #F00;
}
</style>
</head>
<body>
<form action="" id="id_frm" method="post" name="id_frm">
<div id="row_id_question">
<label>Do you have an ID?</label>
<input type="radio" name="id_question" value="Yes" id="id_question">Yes
<input type="radio" name="id_question" value="No" id="id_question">No<br/>
<label for="id_question" class="error" generated="true"></label>
</div>
</div>
<br/><br/>
<!--display & validate if yes-->
<div id="row_id_number">
<label>Enter ID number</label>
<input name="id_number" type="text" id="id_number" maxlength="10" value=""><br/>
<label for="id_number" class="error" generated="true"></label>
</div>
</div>
<!--end yes-->
<br/><br/>
<!--display & validate if no -->
<div id="row_contact_method">
<label>Preferred Contact Method</label><br/>
<input type="radio" name="contact_method" value="Email" id="contact_method">Email
<input type="radio" name="contact_method" value="Phone" id="contact_method">Phone
<input type="radio" name="contact_method" value="Postal" id="contact_method">Postal<br/>
<label for="contact_method" class="error" generated="true"></label>
</div>
</div>
<!--end no-->
<input type="submit" id="submit_btn" value="Submit">
</form>
</body>
</html>
【问题讨论】:
-
$().ready与$.ready不同 -
jQuery Validate 自动忽略隐藏字段,因此您根本不需要更改规则。只需根据您的单选按钮显示/隐藏行,就会根据显示的内容自动进行正确的验证。
标签: jquery radio-button jquery-validate show-hide hidden