任何人都可以帮我修复我的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);" >
&#13;
答案 0 :(得分:2)
您的代码存在多个问题
正则表达式 - 如果您需要验证正则表达式只有10位数字,那么您可以使用正则表达式\d{10}
。您的正则表达式^([\d])
仅匹配字符串开头的数字。
reg2.test(testField)
应更改为reg2.test(testField.value)
,您要尝试比较TextBox值而不是文本框本身。
function validateField(testField)
{
var reg2 = /\d{10}/;
if(testField.value.length > 0)
{
if(reg2.test(testField.value) == false)
{
document.getElementById("testlabel").style.color="red"
return false;
}
else
{
document.getElementById("testlabel").style.color="blue"
return true;
}
}
else
{
document.getElementById("testlabel").style.color="black";
return true;
}
}
<label id="testlabel">Test101: </label>
<input name="txtNum" type="text" id="Num" pattern=".{10,}" minlength="10" maxlength="10" onblur="validateField(this);" >