asp net mvc настраиваемая проверка на стороне клиента для одного поля

Я хочу переопределить проверку на стороне клиента по умолчанию только для одного поля формы.

что я сделал:

  $( ".txt-field" ).change( function( event )
  {
     if ( !checkField( $(this).val() ) )
     {
        $(this).removeClass("valid").addClass("input-validation-error");
     }
     else
     {
        $(this).addClass("valid").removeClass("input-validation-error");
     }
  } );

и мой HTML

           <div class="fields">
               @Html.LabelFor( m => m.BlahBlah.Field, "Field" )
               @Html.TextBoxFor( m => m.BlahBlah.Field, new { @class = "textbox txt-field" } )
           </div>

но это не работает. Функция checkField возвращает истину / ложь. Когда я нахожусь в отладчике javascript и checkField возвращает false, я вижу, что к моему полю ввода добавляется класс ошибок ввода, но сразу после этого он удаляется и к нему добавляется "действительный" класс! Что я делаю неправильно???? Я удалил все атрибуты проверки модели, такие как «required», «maxLength» и т. Д.


person celticharp    schedule 29.05.2013    source источник


Ответы (2)


Попробуйте добавить логику в метод «размытия» вместо метода «изменения».

 $( ".txt-field" ).blur( function( event )
{
 if ( !checkField( $(this).val() ) )
 {
    $(this).removeClass("valid").addClass("input-validation-error");
 }
 else
 {
    $(this).removeClass("input-validation-error").addClass("valid");
 }

} );

person Khalid    schedule 29.05.2013
comment
Спасибо!! но не могли бы вы объяснить мне, почему сработало размытие вместо изменения ?? - person celticharp; 29.05.2013

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

  $( ".txt-field" ).change( function( event )
  {
     if ( !checkField( $(this).val() ) )
     {
        $(this).removeClass("valid").addClass("input-validation-error");
     }
     else
     {
        $(this).removeClass("input-validation-error").addClass("valid");
     }
  } );
person rishikesh tadaka    schedule 29.05.2013
comment
спасибо, но все еще не работает. Допустимый класс добавлен, хотя метод checkField возвращает false, даже если я прокомментирую блок else. - person celticharp; 29.05.2013