Javascript条件:实时验证

时间:2017-02-14 16:08:15

标签: 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);" >
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

您的代码存在多个问题

  1. 正则表达式 - 如果您需要验证正则表达式只有10位数字,那么您可以使用正则表达式\d{10}。您的正则表达式^([\d])仅匹配字符串开头的数字。

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

  3. 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);" >