我需要使用 MVC3 不显眼的验证来验证一组复选框。我该怎么做?我找到了这个并尝试了它,但它不起作用。
$(function(){
$.validator.addMethod('cb_selectone', function(value,element){
if(element.length>0){
for(var i=0;i<element.length;i++){
if($(element[i]).val('checked')) return true;
}
return false;
}
return false;
}, 'Please select at least one option');
$('#main').validate({rules:{Services:"cb_selectone"}});
...
我的HTML:
<input type="checkbox" class="checkbox" name="Services" value="1" />
<input type="checkbox" class="checkbox" name="Services" value="2" />
<input type="checkbox" class="checkbox" name="Services" value="3" />
如果有人提供带有服务器端 + 客户端验证的完整解决方案(当然使用 MVC3 不显眼的验证),那将是最好的。
谢谢
最佳答案
好吧,想通了:
服务器验证:
使用数据注释(必填)
就像在我的 View 模型中一样:
[Required(ErrorMessageResourceName = "fld_Service_val_Required_lbl", ErrorMessageResourceType = typeof(Resources.Service.Controllers.Firm))]
public ICollection<int> Services { get; set; }
为了在我的 html 中进行客户端验证,我在输入复选框中添加了一个类:
<input type="checkbox" class="checkbox required-checkbox" name="Services" value="1" />
<input type="checkbox" class="checkbox required-checkbox" name="Services" value="2" />
<input type="checkbox" class="checkbox required-checkbox" name="Services" value="3" />
并且:
$(function(){
$.validator.addMethod('required_group', function(value, element) {
var $module = $(element).parents('form');
return $module.find('input.checkbox:checked').length;
}, 'Select at least one Service please');
$.validator.addClassRules('required-checkbox', { 'required_group' : true });
..
不确定这是否是最好的解决方案,但它有效:)。如果有人知道更好,请张贴。
关于asp.net-mvc - 不显眼的 MVC3 验证复选框组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5662589/