【问题标题】:How to make error messages disappear quicker如何让错误消息更快消失
【发布时间】:2016-04-07 03:32:26
【问题描述】:

这是一个令人烦恼的小错误。做出有效输入后,错误验证消息需要很长时间(大约 3 秒)才能消失。这是一个例子。

有什么技巧可以解决这个问题吗?有没有办法在有效选择后立即使浏览器选项卡进入下一个字段?在我更改自定义错误消息之前,这不是问题。

有这个问题的笨蛋https://plnkr.co/edit/oKYX6iUC6avbvfELjxWs?p=preview

我现在能想到的唯一解决办法是

element.next().focus()

【问题讨论】:

  • 我认为消失不需要三秒钟。您可以在您的代码中添加任何 Fiddle/Plnkr 吗?
  • 您可以绑定到oninput 事件,并检查验证,如果有效则关注表单中的下一个元素。
  • @KhalidHussain 我使用了另一个问题的 Plnkr 中的示例
  • @mani 谢谢你,我会试一试
  • @jebmarcus plnkr 链接在哪里?所有HTML5 验证都会出现这种延迟吗?您没有在问题正文中提供任何代码。只看快照是不容易回答任何问题的。

标签: javascript html css angularjs error-handling


【解决方案1】:

HTML5 验证消息对于必填字段消失的情况有两种:

案例1:如果您在必填字段中输入任何有效输入,HTML5 验证消息将消失。 (Working Demo)

案例2:即使不输入任何内容,HTML5的验证信息也会在几秒后消失。(与case 1Plnkr核对)

在您的代码中,当您单击Submit 时,会调用ValidateInput() 方法来设置自定义验证消息。

此验证消息可以2 方式消失。

  1. 常规方式(在case 2中描述)
  2. 在输入有效的情况下,点击submit 按钮。

由于您修改了ValidateInput() 方法中的默认验证消息,所以HTML5 验证消息(case 1)的默认行为将不起作用。如果您删除 ValidateInput() 方法,它将按预期工作 (Working Demo)。

    <form name='serviceForm'>
      <select id='colorId1' ng-model = "color1" class = "form-control"
          ng-options = "color as color for color in colors" required>

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

      <select id='colorId2' ng-model = "color2" class = "form-control"
          ng-options = "color as color for color in colors"  required>

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

      <input type='submit' value='Submit'>
   </form>

希望能回答您的问题。

基于jebmarcus评论的解决方案:

是的,有一种方法可以通过您的自定义消息实现此目的。您只需要在 change 两个 drop-down 的事件上调用 ValidateInput() 方法。

Working Plnkr

<form name='serviceForm'>
      <select ng-change='ValidateInput()' id='colorId1' ng-model = "color1" class = "form-control"
          ng-options = "color as color for color in colors" required>

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

      <select ng-change='ValidateInput()' id='colorId2' ng-model = "color2" class = "form-control"
          ng-options = "color as color for color in colors" required>

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

      <input type='submit' ng-click='ValidateInput()' value='Submit'>
   </form>

【讨论】:

  • 完全正确。抱歉,如果我的问题不清楚,但我想知道如何使用 ValidateInput() 让消息立即消失,就好像它不存在一样
  • 我之前已经测试过了,是的,如果我删除 ValidateInput() 中的自定义消息,消息会立即消失。有没有办法通过我的自定义消息来实现这一点?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 2022-01-24
相关资源
最近更新 更多