2016-11-13 19 views
1

我有两个字段,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验证是不是很working.It不断显示 “长度必须是14个字符”,即使长度为好。
    • 而对于用户名部分,谁能告诉我该怎么做?有 有一个数组我必须做什么或什么? NIC的一个示例是 T2108974302906其中210897是DOB。
  • 回答

    0

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

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

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

    然后,您可以将长度比较14.我也建议使用!==代替!=

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

    0
    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/

    要提取出生日期:

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

    对于用户名的一部分,我想从网卡中提取出生日期,并在用户名字段autoplace它。 –

    +0

    你如何把dob放在用户名字段中? –

    +0

    这是用于提问的问题,现在可以解决您所有的问题。 – gskema