Мой ответ - моя модификация veggerby. Пожалуйста, подтвердите его ответ, а не мой. Он спас день.
Я помещаю свой ответ здесь, чтобы добавить небольшое предостережение. (Я делаю Использование 'attr ("имя")).
И показать, как это сделать с помощью выпадающего списка.
Не видно, что на моей странице содержимого есть выпадающий список asp.net с именами "ddlState" и "ddlFavoriteColor". Я поместил фиктивное значение «--Select--» в верхней части выпадающего списка, поэтому я хочу что-то, где selectedIndex больше нуля.
Обратите внимание, этот проект "застрял" с 3.5. : <Я бы лучше сделал что-нибудь с классными функциями 4.0. </p>
Да, мой "проверочный" код может быть меньше, но для веб-примеров я хотел бы быть немного многословным и сжатым, чтобы показать, что происходит.
function GetStateDropDownName() {
var cntlName = $("[id$=_ddlState]").attr("name");
return cntlName;
}
function GetFavoriteColorDropDownName() {
var cntlName = $("[id$=_ddlFavoriteColor]").attr("name");
return cntlName;
}
$(document).ready(function () {
jQuery.validator.addMethod("dropdownBoxHasItemSelected", function (value, select, arg) {
var returnValue = false;
var selectedIndex = $(select).prop("selectedIndex");
if (selectedIndex != 0) {
returnValue = true;
}
return returnValue;
}, "Please select a item.");
var myRules = new Object();
myRules[GetStateDropDownName()] = { dropdownBoxHasItemSelected: true };
myRules[GetFavoriteColorDropDownName()] = { dropdownBoxHasItemSelected: true };
var myMessages = new Object();
myMessages[GetStateDropDownName()] = { dropdownBoxHasItemSelected: "Please select a State." };
myMessages[GetFavoriteColorDropDownName()] = { dropdownBoxHasItemSelected: "Please select a Favorite Color." };
// Initialize validation on the entire ASP.NET form.
$("#aspnetForm").validate({
rules: myRules, messages: myMessages
});