2017-02-14 74 views
-1

任何人都可以请帮我修复我的JavaScript条件。Javascript条件:实时验证

情况是这样的。

当我输入9位数字时,标签应该变成红色。但是如果该字段为空并且我输入10位数字,则标签应该变成蓝色。我很难解决这个问题。

function validateField(testField) 
 
{ 
 
    var reg2 = /^([\d])/; 
 

 
    if(testField.value.length > 0) 
 
    { 
 
    if(reg2.test(testField) == false) 
 
    { 
 
     document.getElementById("testlabel").style.color="red" 
 
     return false; 
 
    } 
 
    else 
 
    { 
 
     document.getElementById("testlabel").style.color="black" 
 
     return true; 
 
    } 
 
    } 
 
    else 
 
    { 
 
    document.getElementById("testlabel").style.color="blue"; 
 
    return true; 
 
    } 
 
}
<label id="testlabel">Test101: </label> 
 
<input name="txtNum" type="text" id="Num" pattern=".{10,}" minlength="10" maxlength="10" onblur="validateField(this);" >

+0

没有上面的代码错误? 'if(reg2.test(testField)== false)'testfield是这里的输入元素,而不是它的值。试试'testField.value'来获取里面的数字。然后你可以为输入的长度添加一个if/else。 – Shilly

+0

你能澄清你实际想要在你的领域?数字或文字? – evolutionxbox

+0

@evolutionxbox,要输入的值应该是数字,但我们希望输入类型为文本。 – Durex

回答

2

有多个问题与您的代码

  1. 正则表达式 - 如果你需要验证的正则表达式对于具有10个数字只有这样,你可以使用正则表达式\d{10} 。您的正则表达式^([\d])只匹配字符串开头的数字。

  2. reg2.test(testField)应改为reg2.test(testField.value),您试图比较TextBox值而不是文本框本身。

function validateField(testField) 
 
{ 
 
\t var reg2 = /\d{10}/; 
 
\t 
 
\t if(testField.value.length > 0) 
 
\t { 
 
\t \t if(reg2.test(testField.value) == false) 
 
\t \t { 
 
\t \t \t document.getElementById("testlabel").style.color="red" 
 
\t \t \t return false; 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t document.getElementById("testlabel").style.color="blue" 
 
\t \t \t return true; 
 
\t \t } 
 
\t } 
 
\t else 
 
\t { 
 
\t \t document.getElementById("testlabel").style.color="black"; 
 
\t \t return true; 
 
\t } 
 
}
<label id="testlabel">Test101: </label> 
 
<input name="txtNum" type="text" id="Num" pattern=".{10,}" minlength="10" maxlength="10" onblur="validateField(this);" >

+0

这就是它!究竟!这正是我需要做的。感谢您的非常好的解释,先生! – Durex