0

我有一个validateFunctionon submit 检查是否输入了姓名和电话号码。(电话是可选的,因此它仅检查是否已填充)

名称验证工作完美,但数字没有。

我在论坛上读到了一些关于在第一次返回后调用的任何东西都不会被执行的东西,我不明白。

有人可以帮助使此代码正常工作吗?

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;
                         }

                     }        
            }
4

3 回答 3

0

关键字return将导致函数退出,因此return 之后的任何代码只有在return 受到某种形式的条件保护时才会运行(例如if (x))。

没有你的 html 也很难知道发生了什么,但我会指出你的变量 'c' 被设置为 ["enterGuest"]["guestNum"] 的值而不是电话号码(除非你不小心复制它)。另外,使用null而不是Null(不是它没有大写)。

于 2012-08-08T20:50:36.577 回答
0

N在你的方法中一切看起来都很好,除了你必须有一个小写:http null: //jsfiddle.net/nivas/XWLXn

于 2012-08-08T21:01:14.123 回答
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/

于 2012-08-08T21:15:04.633 回答