我正在学习jquery。我在jquery中创建了一个带有次要验证的简单html文件,但它们的行为不正常。问题是:
如果先输入名称,然后选中复选框,则一切似乎都正常。
但是,如果我先选择性别然后输入名称,它会一直提醒我选择性别。 代码的实现方式是否存在问题?
<script src="jquery.js"></script>
<script>
$(document).ready(function () {
$("#Name").focus();
$("#target").submit(function () {
var fn = $("#Name").val();
if (fn == "" && fn.length == 0) {
alert('Name is mandatory');
$("#Name").focus();
return false;
}
var status = false;
$("#gender").each(function () {
if ($(this).is(":radio:checked")) {
status = true;
}
});
if (!status) {
alert("Select Gender");
$("#gender").focus();
return false;
}
return true;
});
});
</script>
<form id='target' action='MyResult.html'>
First Name:
<input type='text' name='Name' id='Name' />
<br/>Gender:
<input type='radio' name='gender' id='gender' value='male' />Male
<input type='radio' name='gender' id='gender' value='female' />Female
<br/>
<input type='submit' value='Registration' />
</form>
答案 0 :(得分:1)
ID必须是唯一的。您可以将Attribute value selector与:checked
结合使用,以过滤掉是否选中单选按钮。
var status = $(":radio[name=gender]:checked").length > 0;
代替
var status = false;
$("#gender").each(function () {
if ($(this).is(":radio:checked")) {
status = true;
}
});