2013-02-18 41 views
0

我正在使用jquery.validate表单表单验证。问题是表单上有大约40个无线电输入,s1_AM,s1_PM,s2_AM,s2_PM,每个输入都有大约10个radio个输入。四个选项中至少有一个必须检查,但不是全部四个。如果我在代码中放入class="required",它是不正确的,因为它使得所有四个选项都是必需的。我如何解决这个问题?确保至少有40个单选按钮中的1个被选中

理想情况下,id喜欢保持验证的方式,但如果收音机为空则添加警报。

jQuery的

jQuery.validator.messages.required = ""; 
$("#enroll").validate({ 
invalidHandler: function(e, validator) { 
    var errors = validator.numberOfInvalids(); 
    if (errors) { 
     var message = errors == 1 
      ? 'You missed 1 required field' 
      : 'You missed ' + errors + ' required fields'; 
     $("div.Error span").html(message); 
     $("div.Error").show(); 
    } else { 
     $("div.Error").hide(); 
    } 
} 
}); 

的收音机是动态的,顺便说一句:

if($row['s1_AM_fill'] < $row['s1_AM_cap']) { 
    $s1_AM .= '<input type="radio" name="s1_AM" id="s1_AM_'.$id.'" value="'.$id.'" />; 
} 

再加上三个以上,s1_PMs2_AMs2_PM

这里就是我所做的,只是一旦警报启动时,它不会停止

$('#submit').click(function() {$("ul.courses").each(function(){ 
    $(this).find("input[type=radio]").each(function(){ 
    alert("You must select at least 1 available course"); 
}); 
return false; 
}); 
+0

请出示您的渲染HTML ...不是所有的40次投入,但足以制定一个简洁的演示。另外,请更好地解释你想要的内容......同一组中的所有40个输入(相同的'name')?等等? – Sparky 2013-02-18 06:41:21

回答

1

你不应该使用额外的submitclick处理函数,只有有潜力来干扰插件的内置事件处理程序。

您只需使用plugin's built-in addMethod() method创建新规则即可。事情是这样的......

jQuery.validator.addMethod('customrule', function() { 
    return ($("input[name='s1_AM']:checked").val() || $("input[name='s1_PM']:checked").val() || $("input[name='s2_AM']:checked").val() || $("input[name='s2_PM']:checked").val()); 
}, 'Please select from at least one group'); 

新的规则检查是否使用你的四个radio基中的至少一个。规则如下应用...

$(document).ready(function() { 

    $('#enroll').validate({ // initialize the plugin 
     rules: { 
      's1_AM': { 
       customrule: true 
      }, 
      's1_PM': { 
       customrule: true 
      }, 
      's2_AM': { 
       customrule: true 
      }, 
      's2_PM': { 
       customrule: true 
      } 
     }, 
     groups: { // use this option to consolidate the four messages into one 
      groupname: "s1_AM s1_PM s2_AM s2_PM" 
     } 
    }); 

}); 

工作演示:http://jsfiddle.net/93jTZ/

你需要调整错误位置的功能,按您自己的项目的规格。

其他选项:http://docs.jquery.com/Plugins/Validation/validate#toptions

相关问题