表单验证问题(电话号码)

时间:2010-03-07 01:43:36

标签: javascript validation forms

好的,我有一个验证脚本可以检查表单上的所有内容 - 但它会将电话号码字段标记为错误,无论其中有什么内容。我尝试了几种不同的方法,但我无法弄清楚我做错了什么。

验证脚本的部分是......

    if (testPattern(phone1, /^\d{3}$/)== false) { // checking phone length
        valid = false;
    }
    if (testPattern(phone2, /^\d{3}$/)== false) {
        valid = false;
    }
    if (testPattern(phone3, /^\d{4}$/)== false) {
        valid = false;
    }

功能代码是......

function testPattern(field, reg2) {
    var trueOrfalse = reg2.test(field)
    if (trueOrfalse == false) {
        field.style.backgroundColor="yellow";  // if false, change colors and return false
        field.style.color="red";
        return false;
    }
    else {
        field.style.backgroundColor="white"; // if true, change colors and return true
        field.style.color="black";
        return true;
    }
}

2 个答案:

答案 0 :(得分:3)

也许

var trueOrfalse = reg2.test(field)

应该是

var trueOrfalse = reg2.test(field.value)

添加了:

另外,请记住,在布尔上下文中进行求值时,不必比较true或false。 (使用值本身或否定)。最好在变量之后命名变量,而不是“trueorfalse”这是我的重写:

if (!testPattern(phone1, /^\d{3}$/)) { // checking phone length
    valid = false;
}
if (!testPattern(phone2, /^\d{3}$/)) {
    valid = false;
}
if (!testPattern(phone3, /^\d{4}$/)) {
    valid = false;
}



function testPattern(field, reg2) {
  var good = reg2.test(field.value);
  if (good) {
      field.style.backgroundColor="white"; // if good, change colors
      field.style.color="black";
  }
  else {
      field.style.backgroundColor="yellow";  // if bad, change colors
      field.style.color="red";
  }
  return(good);
}

答案 1 :(得分:0)

不是您问题的实际答案,因为您发布的片段没有任何内在错误,但这对于评论来说太大了。

您的代码真的是多余的!

你可以将整个第一部分表达为:

valid = testPattern(phone1, /^\d{3}$/) &&
        testPattern(phone2, /^\d{3}$/) &&
        testPattern(phone3, /^\d{4}$/)

功能代码为:

function testPattern(field, reg2) {
    var test_result = reg2.test(field)

    if (test_result) {
        field.style.backgroundColor = "white";
        field.style.color = "black";
    } else {
        field.style.backgroundColor = "yellow";
        field.style.color = "red";
    }

    return test_result;
}

或者更简洁:

function testPattern(field, reg2) {
    var test_result = reg2.test(field)

    field.style.backgroundColor = test_result ? "white" : "yellow";
    field.style.color = test_result ? "black" : "red";

    return test_result;
}

阅读不是那么容易吗?