Мне нужно создать пользовательский элемент управления с полями формы для страны (раскрывающийся список), адреса (текстовое поле), города (текстовое поле), штата (раскрывающийся список) и почтового индекса (текстовое поле).Я хочу проверять город, штат и почтовый индекс только в том случае, если в раскрывающемся списке выбрано «Соединенные Штаты».Под «проверкой» я подразумеваю проверку длины - вот и все.
Я пытался использовать пользовательские валидаторы, но мне чего-то не хватает, потому что код, который, по-видимому, должен работать, ничего не делает.Пример:
<asp:CustomValidator ErrorMessage="City, State, and Zip are required fields"
Display="None" ID="LocationValidator"
runat="server" ClientValidationFunction="validateLocation"
onservervalidate="LocationValidator_ServerValidate">
</asp:CustomValidator>
Тогда вот мой код проверки
Проверка на стороне клиента:
function validateLocation(sender, args) {
var country = jQuery("#main_2_MailingAddress_Country").val();
var city = jQuery("#main_2_MailingAddress_City").val();
if (city.Length() > 0)
{
args.IsValid = true;
}
else
{
args.IsValid = country != "United States";
}
}
Проверка на стороне сервера:
protected void LocationValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
if (City.Text.Length > 0)
{
args.IsValid = true;
}
else //nothing was entered for "City"
{
args.IsValid = Country.SelectedValue != "United States";
}
//similar functions for State and Zip go here
}
Если я только выполняю проверку на стороне сервера и ничего не заполняю в форме (кроме полей адреса есть другие обязательные поля), то RequiredFieldValidators, которые я имею для этих другихполя огня.Однако, если я заполняю все поля, кроме «Город», «Штат» и «Zip» (выбирая «США для страны»), то форма отправляется, не обнаруживая, что они пусты.
Если я указываю проверку как на стороне клиента, так и на стороне серверамой пользовательский валидатор (как в приведенном выше примере), ни один из валидаторов не запускается и форма отправляется.
Я понимаю, что это может быть длинный и запутанный пост, но есть ли идеи о том, где яидет не так?