Кто-нибудь знает, как отключить валидатор ASP.NET с помощью JavaScript? Я использую javascript style.display = 'none' для отключения частей веб-страницы. Однако эти отключенные части имеют валидаторы asp.net, которые все еще увольняются, и мне нужно отключить их, не совершая кругосветное путешествие на сервер. Спасибо.
Используйте этот фрагмент:
function doSomething()
{
var myVal = document.getElementById('myValidatorClientID');
ValidatorEnable(myVal, false);
}
Это старый вопрос, но удивил следующий ответ, который он не дал. Я реализовал его с использованием комментариев выше и работает безупречно
# enable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = true
#disable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = disable
Эта реализация может быть кому-то сложной, потому что помните, есть ли ошибка в javascript, код выйдет, но вы не получите никаких ошибок. Некоторые полезные моменты
Убедитесь, что вы можете установить точку останова и выполнить один шаг через код. Если не перезапустить браузер.
Установите точку останова в начале функции, в которую вы помещаете этот код. Шаг через код, если есть ошибка, код выйдет, и вы не сможете войти в код.
В Firefox Firebug вы можете ввести весь оператор javascript на вкладке консоли, чтобы узнать, что возвращает ваш оператор. Самое главное, что вы хотите проверить не нулевые значения элементов управления.
Кроме того, вместо простого сокрытия элементов вы можете установить для свойства Visible значение false...
whateverItem.Visible = false;
Это делает этот элемент просто не отображаемым на странице, что, по моему мнению, отключает проверку. Кто-то, пожалуйста, поправьте меня, если я ошибаюсь.
Лучший способ сделать это,
function doSomething()
{
var objvalidator = document.getElementById('myValidatorClientID');
objvalidator.enabled = false;
objvalidator.isvalid = true;
ValidatorUpdateDisplay(objvalidator);
}
Per Glenn G выше, я бы использовал
myVal.enabled = false;
чтобы отключить валидатор вместо
ValidatorEnable(myVal, false);
Вот что я испытал: оба фрагмента отлично работали на моем сервере 2003 с .net framework 2.0. Однако на сервере 2008 R2 с .net framework 4.0 (я не уверен, что вызывает проблему), я получал непреднамеренное поведение с помощью "ValidatorEnable". На моей странице есть вкладки (usercontrols), и когда я оставил вкладку, которая вызывала "ValidatorEnable", это временно отключило валидаторы на следующей вкладке (даже если код не вызывался для их отключения) до следующей обратной передачи.
Вот подробная статья о том, как управлять ASP.NET-валидаторами из JavaScript:
Как управлять средствами проверки валидатора ASP.NET Проверка на стороне клиента из JavaScript