Пользовательская проверка ASP.NET MVC 3 на стороне клиента

Я хотел бы изменить поведение по умолчанию проверки на стороне клиента, которую использует ASP.NET MVC 3, следующим образом:

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

Я не знаю, является ли это "правильным" способом сделать это, но это то, что я уже сделал:

Я отредактировал jquery.validate.unobtrusive.js:

  function onError( error, inputElement )
  {  // 'this' is the form element
        var container = $( this ).find( "[data-valmsg-for='" + inputElement[0].name + "']" ),
        replace = $.parseJSON( container.attr( "data-valmsg-replace" ) ) !== false;

  container.removeClass( "field-validation-valid" ).addClass( "field-validation-error" );

  inputElement.addClass( "custom-validation-error" ); // <--------- this is my edit
  error.data( "unobtrusiveContainer", container );

  if( replace )
  {
     container.empty();
     error.removeClass( "input-validation-error" ).appendTo( container );
  }
  else
  {
     error.hide();
  }
 }

Это добавляет только класс с именем custom-validation-error, который меняет цвет поля ввода. Но как удалить этот класс, если все ок?

И как мне перестать добавлять промежутки в мой HTML?

Спасибо.


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


Ответы (2)


Просто удалите поле Html.ValidationMessageFor, отвечающее за добавление тега <span>, в котором будет отображаться сообщение об ошибке. Итак, все, что вам нужно, это Html.EditorFor. Затем избавьтесь от написанного вами javascript.

person Darin Dimitrov    schedule 11.10.2012
comment
Спасибо. Я удалил Html.ValidationMessageFor, но я не хочу удалять свой javascript, потому что у меня не будет красной рамки, которую я хочу. Красный цвет добавляется к моим недействительным полям ввода, моя проблема в том, что я не могу удалить их, когда мой ввод действителен! - person celticharp; 12.10.2012
comment
Но вам не нужен javascript. Когда поле недопустимо, ASP.NET MVC автоматически добавляет к нему класс custom-validation-error. Так что все, что вам нужно сделать, это написать соответствующее правило CSS и обвести его красной рамкой. - person Darin Dimitrov; 12.10.2012

Хорошо, ответ был ДЕЙСТВИТЕЛЬНО прост..

Я только что добавил это правило CSS:

.custom-validation-error  
{
   border: 1px solid red !important;
}

удалил мой код javascript и удалил Html.ValidationMessageFor, как предложил Дарин Димитров.

Черт, черт...

person celticharp    schedule 12.10.2012