jQueryvalidation选择列表的问题

我已经看到了大量关于如何在选择列表中使用jQuery Validation的示例 – 我正在尝试实现一个,但它对我来说不起作用。 我对这个插件一般都很陌生,我对我做错了什么感到非常困惑。

预期的行为是它不应validation用户是否已将选择菜单保留为“默认”。 他们必须做出选择。

我首先连接新的validation器方法。

使用Javascript

(function($) { $.validator.addMethod('mustbe', function(value, element, params) { var testValue = params['propertyvalue']; var condition = params['condition']; if ((condition == '0') && (value != testValue)) return true; if ((condition == '1') && (value == testValue)) return true; return false; }); })(jQuery); $(document).ready(function() { $("#form1").validate(); $('#form1').submit(function() { alert($('#form1').valid()); }); });​ 

然后我通过将元数据添加到实际HTML来进行跟进。

HTML

 
Choose... 1 2

它只是拒绝validation。 这里也是一个小提琴的链接:

的jsfiddle

你应该告诉你正在使用ASP.NET MVC。 它没有用,但人们会停止询问自定义属性名称。

我重新设计了您的代码以使用value default和data-val属性。 这是一个代码示例:

 $(document).ready(function() { $.validator.addMethod("valueNotEquals", function(value, element, arg){ return arg != value; }, ""); $("#form1").validate({ rules: { select_list : {valueNotEquals: $('#select_list').attr('data-val-mustbe-propertyvalue')}, }, messages: { select_list : { valueNotEquals: $('#select_list').attr('data-val-required') } }, submitHandler: function(form) { alert($('#form1').valid()); form.submit(); } }); }); 

编辑:

这是一个jsFiddle示例: http : //jsfiddle.net/Gajotres/ekPpS/

这是一个没有ASP.NET MVC属性的版本:

 
$(document).ready(function() { $.validator.addMethod("valueNotEquals", function(value, element, arg){ return arg != value; }, ""); $("#form1").validate({ rules: { select_list : {valueNotEquals: "default"}, }, messages: { select_list : { valueNotEquals: "You must select a value" } }, submitHandler: function(form) { alert($('#form1').valid()); form.submit(); } }); });

简单的方法是在默认选项中使用value='' ,并指定select是必需的:

  

所以巴马尔的答案部分正确但没有得到很好的解释。

我做的更改是为了让这个更新的小提琴起作用:

name =“select_list”添加到select元素本身,以便为jquery.validate提供它想要查找的内容

修改了javascriptvalidation调用:

 $("#form1").validate({ rules: { select_list: { required: true, number: true } }, submitHandler: function(form) { alert($('#form1').valid()); form.submit(); } });