我正在尝试设置一些验证,因此如果选中“是”单选按钮,则需要验证另一个控件,即下拉列表,以确保它未设置为列表中的默认第一个条目“请选择......”。
我尝试了很多种组合但却无法使用它。验证消息显示是否选中了复选框。
这是一些代码!
这是我用来验证下拉列表的自定义方法。 (这适用于简单的DDL验证)
$.validator.addMethod(
"selectNone",
function(value, element) {
return this.optional(element) || element.value != "Please Select...";
},
"Please select an option."
);
要根据复选框进行验证,我已将规则添加到表单
$(document).ready(function() {
var validator = $("#BuildingsCoverForm").validate({
rules: {
NCBYears: {
selectNone: function(element) {
return $("*[name='PreviousInsurance']")[0].checked;
}
}
},
messages: {
NCBYears: {
selectNone: "This field is required"
}
}
});
});
以下是控件。
<p>
<label for="PreviousInsurance" class="halfstretch">Do you have any previous insurance?</label>
<%= Html.YesNoControl("PreviousInsurance", Model.PreviousInsurance)%>
</p>
<p>
<label for="NCBYears" class="halfstretch">Building No Claim Bonus</label>
<%= Html.DropDownList("NCBYears", ViewData["NCBYears"] as SelectList)%>
</p>
非常感谢任何想法。
非常感谢
答案 0 :(得分:23)
只要第一个下拉列表选项具有空值(<option value="">some text</option>),
,以下规则就可以使用:
rules: {
NCBYears: {
required: function(element) {
return $("input:radio[name='PreviousInsurance']:checked").val() == 'yes';
}
}
}
来自:http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-expression
答案 1 :(得分:1)
ScottE是对的。我有一个从数据库填充的下拉列表,我只是在列表的最顶部添加了一个项目,并给它一个值“”。验证输入时,只需对下拉列表进行验证为空。如果列表永远不会更改,您也可以对列表进行硬编码,并使用空白值将项目添加到顶部,例如下面。
_example.Add(new SelectListItem { Text = "Select Example", Value = ""});
答案 2 :(得分:-1)
这不适用于当前版本的Validate.js(v 1.7)
我还能够证明这个概念不起作用:
rules: {
xyz: {
required: function(element) {
return true;
}
}
}
这也失败了。