设置第二个验证消息

问题描述:

我想为我的密码输入设置第二个验证消息,但它不起作用,您能帮我吗?设置第二个验证消息

这是我的标签:

<input id="password" style="text-align:center;" type="text" name="password" 
     tabindex="3" pattern="[a-zA-Z0-9].{5,}" title="" required 
     oninvalid="this.setCustomValidity('Please enter a password')" 
     oninput="this.setCustomValidity('')" 
     onkeyup="deleteBadConfirm(); valid_pass();" /> 

这也是亩js函数第二验证消息:

function valid_pass() { 
    if(document.getElementById("password").value != "") { 
    document.getElementById("password") 
      .setCustomValidity('At least, enter 6 characters; Don't use any symbols'); 
    }; 
}; 

function deleteBadConfirm() { 
    $("#confirmpassword").prop("value", ""); 
}; 

编辑:这是它应该如何下去, 如果用户在输入密码之前按提交,消息显示“请输入密码”。然后,如果用户输入密码,但它无效,这次该消息应该说“至少输入6 ...”。现在,它显示第一条消息,但是如果输入少于6个字符,它仍会显示旧消息,如果输入6个无效字符,则不会显示任何消息!

+0

“至少,输入6个字符;不要使用任何符号' 是这个消息不显示? –

+0

你能解释一步一步的格式 –

+0

我刚刚编辑的问题,并解释了我需要它的工作方式 –

你有以下线路错误 通过添加一个转义字符更改此

document.getElementById("password") 
      .setCustomValidity('At least, enter 6 characters; Don't use any symbols'); 

document.getElementById("password") 
      .setCustomValidity('At least, enter 6 characters; Don\'t use any symbols'); 

- 反斜杠()

+0

谢谢,但它仍然无效:( –

清除oninvalid事件或它总会覆盖你的setCustomValidity。添加了:invalid CSS伪类来检查值是否有效。

function valid_pass() { 
 
    if (document.getElementById("password").value != "") { 
 
    if ($('#password').is(":invalid")) { 
 
     document.getElementById("password") 
 
     .setCustomValidity('At least, enter 6 characters; Don\'t use any symbols'); 
 
    }; 
 
    } else { 
 
    document.getElementById("password") 
 
     .setCustomValidity('Please enter a password'); 
 
    }; 
 
}; 
 

 
function deleteBadConfirm() { 
 
    $("#confirmpassword").prop("value", ""); 
 
}; 
 

 
//Added this to show setCustomValidity message/tooltip without submit event 
 
function runReportValidity() { 
 
    document.getElementById("password").reportValidity(); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="password" style="text-align:center;" type="text" name="password" tabindex="3" pattern="[a-zA-Z0-9].{5,}" title="" required oninvalid="valid_pass()" oninput="this.setCustomValidity('')" onkeyup="deleteBadConfirm(); valid_pass();" /> 
 

 
<!-- Added this to show setCustomValidity message/tooltip without submit event --> 
 
<input type="button" onClick="runReportValidity()" value="Report Validity">

+0

这种有点奏效,但我仍然有一个问题:我只要给定的密码无效;我甚至在我原来的代码中有if语句: 'if(document.getElementById(“password”)。invalid){document.getElementById(“password” ).setCustomValidity('至少输入6 ...');} else {document.getElementById(“password”)。setCustomValidity('');};' –

+0

@TheMonster现在更新我的答案我见过你编辑。 – Cobote