[英]How to validate radio button on HTML forms using jQuery?
I'm trying to do a form field validation. 我正在尝试进行表单字段验证。 I got the text fields validation working from here , but not for the radio buttons as I am unsure of where I did wrong.
我从这里开始进行文本字段验证,但不是单选按钮,因为我不确定我做错了什么。
HTML: HTML:
<div>
<label>Gender:</label>
<input type="radio" name="gender" class="gender" value="Female" >Female</input>
<input type="radio" name="gender" class="gender" value="Male" >Male</input> <br/>
<span class="error">This field is required</span>
</div>
jQuery: jQuery的:
$('.gender').on('input', function() {
var input = $( this );
var is_checked = $("input[name=gender]:checked").length != 0;;
if (is_checked) {$('.gender').removeClass("invalid").addClass("valid");}
else {$('.gender').removeClass("valid").addClass("invalid");}
});
This is the real-time validation code which I played around on. 这是我玩过的实时验证代码。 It does not work however.
但是,它不起作用。 When submitting the form, my error message still shows up regardless of which radio button I choose.
提交表单时,无论选择哪个单选按钮,我的错误消息仍然显示。
$("#studentsform").submit(function(event) {
var form_data = $("#studentsform").serializeArray();
var error_free = true;
for (var input in form_data){
var element = $("#"+form_data[input]['name']);
var valid = element.hasClass("valid");
var error_element = $("span", element.parent());
if (!valid) {error_element.removeClass("error").addClass("error_show"); error_free = false;}
else {error_element.removeClass("error_show").addClass("error");}
}
if (!error_free) {
event.preventDefault();
}
else {
idcount++
var Surname = $('#surname').val();
var Name = $('#name').val();
var Gender = $('.gender:checked').val();
var Addr = $('#address').val();
var Email = $('#email').val();
var Phone = $('#phone').val();
$("#tblData tbody").append( "<tr>"+ "<td>" + idcount + "</td>"+ "<td>" + Surname + "</td>"+
"<td>" + Name + "</td>"+
"<td>" + Gender + "</td>"+
"<td>" + Addr + "</td>"+
"<td>" + Email + "</td>"+
"<td>" + Phone + "</td>"+
"<td><button class='btnEdit'>Edit</button><button class='btnDelete'>Delete</button></td>"+ "</tr>");
$(".btnEdit").bind("click", Edit);
$(".btnDelete").bind("click", Delete);
}
});
After checking all real-time validation, on the submit button I do the code above, which is to double check for validations and if it is error free, i append all the inputs into a row. 检查所有实时验证之后,在“提交”按钮上执行上面的代码,该代码要仔细检查验证,如果没有错误,我会将所有输入附加到一行中。
Preview: 预习:
As you can see from the picture above, even after clicking on Insert, my error message still shows up. 从上图可以看到,即使单击“插入”,我的错误消息仍然显示。
The author's code are very structured, but if anyone has a better and simpler way, could you please provide me a sample solution? 作者的代码非常结构化,但是如果有人有更好,更简单的方法,能否请您提供示例解决方案?
Much thanks! 非常感谢!
Looks like you need 看起来你需要
$("input[name=gender]").prop("checked");
which will return a boolean matching the checked value 这将返回与检查值匹配的布尔值
Edit: 编辑:
If you want to keep your code the same, you need to add the .valid
class to all the gender
-classed inputs. 如果要保持代码不变,则需要将
.valid
类添加到所有gender
分类的输入中。 This way, when you check one radio, it will make both valid, and you shouldn't get an error. 这样,当您检查一个无线电时,它将使两个无线电均有效,并且不会出现错误。
$('.gender').on('input', function() {
var input = $( this );
var is_checked = $("input[name=gender]:checked").length != 0;
if (is_checked){
$('.gender').removeClass("invalid").addClass("valid");
} else {
$('.gender').removeClass("valid").addClass("invalid");
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.