简体   繁体   English

如何使用jQuery验证HTML表单上的单选按钮?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM