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

27

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

Теги:
validation

6 ответов

44
Лучший ответ

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

function doSomething()
{
  var myVal = document.getElementById('myValidatorClientID');
  ValidatorEnable(myVal, false); 
}
  • 0
    Heads-up: это не будет работать для ASP.NET 1.1 с Firefox stackoverflow.com/questions/3640183/…
  • 14
    Другой недостаток заключается в том, что валидатор все еще включен на стороне сервера, что может удивить вас при следующей обратной передаче.
Показать ещё 1 комментарий
1

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

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

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

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

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

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

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

1

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

whateverItem.Visible = false;

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

  • 3
    Вы правы, что он не отображается на странице, но требует обратной передачи, тогда как Javascript этого не делает.
  • 0
    не работает Даже если элементы управления скрыты, прикрепленный к нему валидатор пытается его подтвердить
0

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

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

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

myVal.enabled = false; 

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

ValidatorEnable(myVal, false); 

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

  • 1
    Я нашел, что это решение работает лучше для меня в framework 4.6.1, ValidatorEnable дает мне ошибку Page.Validators.
0

Вот подробная статья о том, как управлять ASP.NET-валидаторами из JavaScript:

Как управлять средствами проверки валидатора ASP.NET Проверка на стороне клиента из JavaScript

  • 3
    Пожалуйста, поделитесь соответствующим кодом вместе с ссылкой ... Ссылка сейчас не работает !!!
  • 1
    Добавлена ссылка с путевой машины, которая работает.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню