Подтвердить что ты не робот

Отключить валидаторы ASP.NET с помощью JavaScript

Кто-нибудь знает, как отключить валидатор ASP.NET с помощью JavaScript? Я использую javascript style.display = 'none' для отключения частей веб-страницы. Однако эти отключенные части имеют валидаторы asp.net, которые все еще увольняются, и мне нужно отключить их, не совершая кругосветное путешествие на сервер. Спасибо.

4b9b3361

Ответ 1

Используйте этот фрагмент:

function doSomething()
{
  var myVal = document.getElementById('myValidatorClientID');
  ValidatorEnable(myVal, false); 
}

Ответ 2

Кроме того, вместо простого сокрытия элементов вы можете установить для свойства Visible значение false...

whateverItem.Visible = false;

Это делает этот элемент просто не отображаемым на странице, что, по моему мнению, отключает проверку. Кто-то, пожалуйста, поправьте меня, если я ошибаюсь.

Ответ 3

Это старый вопрос, но удивил следующий ответ, который он не дал. Я реализовал его с использованием комментариев выше и работает безупречно

# enable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = true

#disable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = disable

Эта реализация может быть кому-то сложной, потому что помните, есть ли ошибка в javascript, код выйдет, но вы не получите никаких ошибок. Некоторые полезные моменты

  • Убедитесь, что вы можете установить точку останова и выполнить один шаг через код. Если не перезапустить браузер.

  • Установите точку останова в начале функции, в которую вы помещаете этот код. Шаг через код, если есть ошибка, код выйдет, и вы не сможете войти в код.

  • В Firefox Firebug вы можете ввести весь оператор javascript на вкладке консоли, чтобы узнать, что возвращает ваш оператор. Самое главное, что вы хотите проверить не нулевые значения элементов управления.

Ответ 5

Per Glenn G выше, я бы использовал

myVal.enabled = false; 

чтобы отключить валидатор вместо

ValidatorEnable(myVal, false); 

Вот что я испытал: оба фрагмента отлично работали на моем сервере 2003 с .net framework 2.0. Однако на сервере 2008 R2 с .net framework 4.0 (я не уверен, что вызывает проблему), я получал непреднамеренное поведение с помощью "ValidatorEnable". На моей странице есть вкладки (usercontrols), и когда я оставил вкладку, которая вызывала "ValidatorEnable", это временно отключило валидаторы на следующей вкладке (даже если код не вызывался для их отключения) до следующей обратной передачи.

Ответ 6

Лучший способ сделать это,

function doSomething()
{
    var objvalidator = document.getElementById('myValidatorClientID');
    objvalidator.enabled = false;
    objvalidator.isvalid = true;
    ValidatorUpdateDisplay(objvalidator);
}