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


NIC检查数字或字符
用户名字段必须包含8个以上的字符,包括日期
NIC的出生日期。


到目前为止,我已经为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是DOB。

最佳答案

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);
}

关于javascript - NIC和用户名验证字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40578592/

10-11 11:58