Пользовательское сообщение проверки ошибки не отображается

Я делаю проверку ошибок в Angular следующим образом.

<select ng-model = "color" class = "form-control"
    ng-options = "color as color for color in colors" required>
    <option value="">Choose an option</option> 
</select>

<span ng-show="serviceForm.color.$error.required"> My custom error message </span>

Проверка ошибки отображается, как и ожидалось, однако пользовательское сообщение не отображается. Вместо этого я получаю следующее.

введите здесь описание изображения

Выглядит красиво, но как мне заменить его своим персональным сообщением? Было бы здорово, если бы я знал, откуда оно взялось, чтобы я мог его отредактировать.

Кроме того, мое собственное сообщение появляется, если я достаю

<option value="">Choose an option</option> 

а потом всегда появляется. Почему это?


person kevin_b    schedule 04.04.2016    source источник
comment
Можете ли вы поделиться исполняемым демо/сниппетом или JSFiddle?   -  person Rayon    schedule 04.04.2016


Ответы (4)


Рабочий план

Вы можете заменить HTML5 сообщение проверки этого конкретного поля на space при отправке формы. Это предотвратит отображение сообщения и не повлияет на другое HTML5 сообщение проверки.

JavaScript:

$scope.ValidateInput = function(){
    var email = document.getElementById("colorId");

    if (email.validity.valueMissing) {
        email.setCustomValidity(" ");
    } else {
        email.setCustomValidity("");
    }
  }

HTML:

<form name='serviceForm'>
      <select name='color' id='colorId' ng-model = "color" class = "form-control"
    ng-options = "color as color for color in colors" required>
         <option value="">Choose an option</option> 
      </select>

     <span ng-show="serviceForm.color.$error.required"> My custom error message </span>
     <input type='submit' ng-click='ValidateInput()' value='Submit'>
</form>
person Khalid Hussain    schedule 04.04.2016
comment
пользовательское сообщение об ошибке всегда появляется в этом plnkr, как это исправить? Он не должен появляться по умолчанию - person kevin_b; 06.04.2016
comment
Обновил мой ответ и plunkr, пожалуйста, проверьте его. - person Khalid Hussain; 07.04.2016


<select ng-model = "color" class = "form-control" name="lstColor"
    ng-options = "color as color for color in colors" data-msg-required="Please select color from list" required>
    <option value="">Choose an option</option> 
</select>

Попробуйте выше и надеюсь решить вашу проблему

person Own    schedule 04.04.2016
comment
Если нет, то может возникнуть проблема с проверкой плагинов. Пожалуйста, правильно это указывает или нет. Как бы вы ни написали все вышеперечисленное в расширенном формате JS. - person Own; 04.04.2016
comment
if($(form).valid()==false){$(form).validate({rules:{lstColor:{required:true}},messages{lstColor:{required:Выберите цвет}}); - person Own; 04.04.2016
comment
Спасибо, но я использую Angular, поэтому хочу максимально избегать использования обычного Javascript. - person kevin_b; 04.04.2016

<form novalidate> можно использовать, чтобы избежать этих сообщений.

Но вы также можете использовать функцию setCustomValidity, когда происходит событие oninvalid, чтобы заменить его вашим собственным сообщением.

Нравиться:

<input class="form-control" type="email"  required="" placeholder="username" oninvalid="this.setCustomValidity('Please Enter valid email')"></input>

Полезное объяснение здесь.

person M. Junaid Salaat    schedule 04.04.2016
comment
не будет ли novalidate полностью отключать проверку на стороне клиента? - person kevin_b; 04.04.2016
comment
и проблема с этим подходом заключается в том, что даже после того, как я выбираю вариант, проверка ошибки не распознает его и все равно просит меня выбрать один - person kevin_b; 04.04.2016