NIC和用户名验证字段

时间:2016-11-13 20:42:05

标签: javascript jquery html5

我有两个字段,即NIC和用户名。他们的验证是

  • 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>
&#13;
&#13;
&#13;

对于我的用户名,我试过了。

&#13;
&#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;
&#13;
&#13;

  • 我对NIC的验证不太有效。它一直在显示 &#34;长度必须为14个字符&#34;即使长度很好。
  • 对于用户名部分,有人可以告诉我该怎么做吗?是 有一个我必须做的数组或什么? NIC的一个例子是 T2108974302906其中210897是DOB。

2 个答案:

答案 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/

上测试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);
}

答案 1 :(得分:0)

var nic = document.getElementById('NIC');

此语句获取输入元素 - 而不是其值。你需要得到它的价值:

var nic = document.getElementById('NIC').value;

然后,您可以将长度与14进行比较。我还建议您使用!==代替!=

用户名验证 - 如果您尝试验证,为什么要替换该值?为什么你的最大值是14而不是8?