好的,我有一个验证脚本可以检查表单上的所有内容 - 但它会将电话号码字段标记为错误,无论其中有什么内容。我尝试了几种不同的方法,但我无法弄清楚我做错了什么。
验证脚本的部分是......
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;
}
}
答案 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;
}
阅读不是那么容易吗?