我提交了validateFunction
,检查是否有姓名和电话号码
输入与否。 (电话是可选的,因此只检查其是否已填写)
名称验证工作正常,但数字没有。
我在论坛上看到一些关于在第一次返回后被调用的东西不会被执行的东西,我不明白。
有人可以帮助使这段代码有效吗?
function validateForm()
{
var x=document.forms["enterGuest"]["guestName"].value;
if (x==""||x==Null)
{
alert("Guest Name Please");
return false;
}
var c=document.forms["enterGuest"]["guestNum"].value;
if(c=="" || c==Null)
{
// Do nothing. Guest does not want to share the phone number.
alert(" This Guest Cannot Receive A Call.");
return true;
}
else
{
c.replace(/[^0-9]/g, '');
if (c.length !=10)
{
alert("10 Digits Please.");
return false;
}
else
{
var r = confirm(" Please Confirm The Phone Number Is Correct.");
if(r==true)
{
return true;
}
else
{
return false;
}
}
}
答案 0 :(得分:0)
关键字返回将导致函数退出,因此返回后的任何代码只有在某些形式的条件(例如if(x))保护返回时才会运行。
如果没有你的HTML,它也很难知道发生了什么,但我会指出你的变量'c'正在设置[“enterGuest”] [“guestNum”]的值,而不是电话号码(除非你不小心复制了它)。此外,使用 null 而不是 Null (不是它没有大写)。
答案 1 :(得分:0)
您的方法中的所有内容都很顺利,但您必须在N
中设置小写null
:http://jsfiddle.net/nivas/XWLXn
答案 2 :(得分:0)
你也可以使用if / else语句来避免在javascript中使用太多的返回。
function validateForm() {
var thisName = document.forms["enterGuest"]["guestName"].value
if(thisName == "" || thisName === null) {
alert("Guest Name Please")
} else {
var thisNum = document.forms["enterGuest"]["guestNum"].value
if(thisNum == "" || thisNum === null) {
alert("This Guest Cannot Receive A Call.")
} else {
thisNum.replace(/[^0-9]/g, '')
if(thisNum.length != 10) {
alert("10 Digits Please.")
} else {
var checkThis = confirm("Please Confirm The Phone Number Is Correct.")
if(checkThis == true) {
return true
} else {
return false
}
}
}
}
return false
}
建立在Nivas的小提琴上,例如这里 - > http://jsfiddle.net/XWLXn/1/