我有两个字段,网卡和用户名。他们的验证是
- NIC 检查数字或字符
- 用户名字段必须包含超过 8 个字符(包括日期) 从 NIC 出生。
到目前为止,我已经在我的网卡上尝试过这个。
function validateNIC()
{
var nic = document.getElementById('NIC');
var mesg = document.getElementById('message1');
if (NIC.length != 14) {
message1.innerHTML="Length must be 14 characters";
} else{
message1.innerHTML="Length is good";
}
}
<div class="form-group">
<label for="username"><span class="req">* </span> NIC NUMBER:</label>
<input class="form-control" type="text" name="NIC" id = "NIC" required onkeyup = "validateNIC();" maxlength=14 />
<span id="message1"></span>
</div>
对于我的用户名,我尝试了这个。
function Validate(txt) {
txt.value = txt.value.replace(/[^a-zA-Z-'\n\r.]+/g, '');
}
<div class="form-group">
<label for="username"><span class="req">* </span> User name:</label>
<input class="form-control" type="text" name="username" id="txt" onkeyup="Validate(this)" maxlength=14 required />
<div id="errLast"></div>
</div>
- 我对 NIC 的验证不太有效。它一直显示 即使长度不错,“长度必须为 14 个字符”。
- 对于用户名部分,谁能告诉我该怎么做?是 我必须做一个数组还是什么? NIC 的一个示例是 T2108974302906,其中 210897 是出生日期。
最佳答案
var nic = document.getElementById('NIC');
var mesg = document.getElementById('message1');
if (NIC.length != 14) {
这里NIC
引用 DOM 元素,而不是该输入元素的值。
您想使用nic.value.length
.
至于用户名,你的正则表达式看起来很奇怪[^a-zA-Z-'\n\r.]
。该集合匹配不在该集合中的字符。你为什么放\n
和\r
?
无论如何,如果您使用 <form>
元素来提交这些字段,我建议您使用 pattern属性。您可以在 http://regex101.com/ 上测试 yoru 模式
提取 DOB:
<input pattern="^T[0-3]\d[0-1]\d{10}$">
validateNIC() {
var nic = document.getElementById('NIC');
var isValid = /^T[0-3]\d[0-1]\d{10}$/.test(nic.value);
var dob = nic.value.substring(1, 7);
}
关于javascript - NIC 和用户名验证字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578592/