【问题标题】:.setCustomValidity; Will Not Reset After Triggering.setCustomValidity;触发后不会复位
【发布时间】:2014-08-03 04:42:46
【问题描述】:

我正在尝试测试用户是否两次输入相同的密码。

然而,一旦.setCustomValidity 被触发,如果输入有效输入并按下提交,它将不会重置为有效。

这是我的 JSFIDDLE link 的链接。 JSFIDDLE 显示一个我无法识别的错误。

这是我的 HTML:

<p id="demo">&nbsp;   </p>
<table>

<form onsubmit="validateInput(); return false"  method=post >
<tr>
    <td>Password</td>
          <td><input Id="Pass" name="Pass" type="password" required 
              placeholder="Secret" ></td>
        </tr>
        <tr>
   <td>Retype Password</td>
          <td><input Id="PassRe" name="PassRe" type="password" required 
               placeholder="Secret" ></td>
<tr>
     <td></td>

     <td>
         <input type="submit" class="Button" value="Submit">
         <input type="reset"  class="Button" value="Clear" name="ResetBtn">
     </td>
</tr>

</form>
</table>

这两个输入是 Pass 和 PassRe 的给定 ID。

JS 测试两个输入是否相等。

如果它们不相等,脚本会设置 .setCustomValidity 和 demo 文本以显示错误。

(或者最后这就是我想要它做的事情。)

还有我的 JS

function validateInput() {  

 var Pass1 = document.getElementById("Pass").value;
 var Pass2 = document.getElementById("PassRe").value;

if(Pass1 == Pass2){

      document.getElementById("PassRe").setCustomValidity('');                
      document.getElementById("demo").innerHTML=  ('');     

            }else{
      document.getElementById("PassRe").setCustomValidity('The passwords dont match');
      document.getElementById("demo").innerHTML=  ('The passwords dont match');                      

};
}                               

【问题讨论】:

  • jsfiddle 不运行validateInput,因为它被定义为本地函数。这是由使用“onLoad”选项引起的。这是工作的 jsfiddle:jsfiddle.net/7GjvL
  • @JukkaK.Korpela 谢谢,但是在输入无效输入后它仍然没有重置。为了让 JS 加载,你需要做些什么改变?
  • @JukkaK.Korpela 我看到 JSFIDDLE 选项发生了什么变化。我会看看那个重复的谢谢。

标签: javascript html validation


【解决方案1】:

Problem solved in this question

Chrome 以一种奇怪的方式处理 .setCustomValidity。 因为.setCustomValidity 是由浏览器处理的,所以问题取决于浏览器。 切换到完整的 JS 验证并删除了使用 .setCustomValidity 修复问题的部分。

JSFIDDLE Example

【讨论】:

    猜你喜欢
    • 2018-01-28
    • 2017-02-09
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2018-01-28
    • 2019-03-20
    相关资源
    最近更新 更多