【问题标题】:Custom Error Validation Message Not Showing自定义错误验证消息未显示
【发布时间】:2016-07-23 14:12:11
【问题描述】:

我在 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> 

然后它总是出现。这是为什么呢?

【问题讨论】:

  • 你能分享可执行的 demo/sn-p 或JSFiddle 吗?

标签: javascript html angularjs error-handling requiredfieldvalidator


【解决方案1】:

这条消息很可能来自您的浏览器,就像 form validaten 一样。

您必须在表单中添加 novalidate 属性才能禁用它:

<form novalidate>

【讨论】:

  • 谢谢,但我不想专门这样做,因为这会禁用客户端验证?
  • 我不希望表单在验证之前提交
  • 您添加了自己的验证,因此无论如何都不应该在验证之前提交。
  • 出于某种原因,我自己的验证在这里不起作用。表单仍然提交,并且没有弹出验证消息。
  • 我自己的验证只有在我取出不应取出的“”时才有效
【解决方案2】:
<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>

试试上面的方法,希望能解决你的问题

【讨论】:

  • 如果不是,那么验证插件可能有问题..请它是否正确引用。您如何以扩展的 JS 格式编写以上所有内容..
  • if($(form).valid()==false){$(form).validate({rules:{lstColor:{required:true}},messages{lstColor:{required: "请选择一种颜色"}});
  • 谢谢,但我使用的是 Angular,所以我想尽可能避免使用常规 Javascript。
【解决方案3】:

&lt;form novalidate&gt; 可用于避免这些消息。

但您也可以在oninvalid 事件发生时使用setCustomValidity 函数将其替换为您的自定义消息。

喜欢:

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

有用的解释here.

【讨论】:

  • 不会形成 novalidate 一起禁用客户端验证吗?
  • 而这种方法的问题是,即使我选择了一个选项,错误验证也无法识别它,仍然要求我选择一个
【解决方案4】:

Working Plnkr

您可以在表单提交时用space 替换该特定字段的HTML5 验证消息。它将阻止显示消息并且不会影响其他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>

【讨论】:

  • 自定义错误消息总是出现在那个 plnkr 中,无论如何要解决这个问题?它不应该出现在默认情况下
  • 更新了我的答案和plunkr,请查看。
猜你喜欢
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2017-09-30
  • 1970-01-01
相关资源
最近更新 更多