自定义有效性至少选中一个复选框jquery

时间:2014-06-23 09:09:07

标签: javascript jquery

我有两个性别复选框。男性和女性。我应该如何设置至少一个性别的验证。从周一到周日,我也有1周的日子。它至少也是一天的选择。这是我的jquery

$(document).ready(function(){
            // --- set required message --- //

                var msg="";
                var elements = document.getElementsByTagName("INPUT");

                for (var i = 0; i < elements.length; i++) {
                   elements[i].oninvalid =function(e) {
                        if (!e.target.validity.valid) {
                        switch(e.target.name){                              
                            case 'gender' :
                                e.target.setCustomValidity("Please select at least one gender.");break;                             
                            case 'days' :
                                e.target.setCustomValidity("Please select at least one day.");break;
                            case 'location' :
                                e.target.setCustomValidity("Please enter a location where the image can be seen.");break;
                        default : e.target.setCustomValidity("");break;

                        }
                       }
                    };
                   elements[i].oninput = function(e) {
                        e.target.setCustomValidity(msg);
                    };
                }
            });



<input type=checkbox name=gender[] required>Male
<input type=checkbox name=gender[] required>Female

<input type=checkbox name=days[] required>Monday
<input type=checkbox name=days[] required>Tuesday
<input type=checkbox name=days[] required>Wednesday
<input type=checkbox name=days[] required>Thursday
<input type=checkbox name=days[] required>Friday
<input type=checkbox name=days[] required>Saturday
<input type=checkbox name=days[] required>Sunday

3 个答案:

答案 0 :(得分:1)

if($("input[name='gender[]']:checked").length > 0){

}

这应该可以解决问题,但不确定它是否喜欢名称中的[]。

基本告诉jquery获取所有已被选中的gender []名称的输入。您所要做的就是检查长度。

答案 1 :(得分:1)

而不是使用html5要求和有效性..您可以使用jquery查看是否选中了复选框..

if($("input[name='gender[]']").is(":checked").length < 1){
 // no gender selected..
 var errmsg = $("<div class='error'>Please select at least one gender</div>");

}
if($("input[name='days[]']").is(":checked").length < 1){
 // no day selected..
 var errmsg = $("<div class='error'>Please select at least one day</div>");
}

$("containerelement").append(errmsg);

答案 2 :(得分:1)

您可以在jquery中使用:checked查看此示例Jquery API documentation :checked

var n = $( "input:checked" ).length;你可以使用jquery中的类选择器检查你想要输入输入的输入数量,根据你要验证的情况。