我有两个字段,即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>
&#13;
对于我的用户名,我试过了。
function Validate(txt) {
txt.value = txt.value.replace(/[^a-zA-Z-'\n\r.]+/g, '');
}
&#13;
<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>
&#13;
答案 0 :(得分:1)
var nic = document.getElementById('NIC');
var mesg = document.getElementById('message1');
if (NIC.length != 14) {
此处NIC
指的是DOM元素,而不是该输入元素的值。
您想使用nic.value.length
。
至于用户名,您的RegEx看起来很奇怪[^a-zA-Z-'\n\r.]
。此集匹配不在集合中的字符。你为什么放\n
和\r
?
无论如何,如果您使用<form>
元素提交这些字段,建议您使用pattern属性。您可以在http://regex101.com/
提取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);
}
答案 1 :(得分:0)
var nic = document.getElementById('NIC');
此语句获取输入元素 - 而不是其值。你需要得到它的价值:
var nic = document.getElementById('NIC').value;
然后,您可以将长度与14进行比较。我还建议您使用!==
代替!=
。
用户名验证 - 如果您尝试验证,为什么要替换该值?为什么你的最大值是14而不是8?