Javascript只有一个函数调用有效

时间:2014-05-03 19:13:30

标签: javascript ajax

我有一个简单的注册表格。一旦用户键入他的电话号码并离开文本框(onblur),其他一些字段就会自动填充,使用Ajax调用php脚本,这个工作正常。现在,我正在尝试在不同的文本字段上添加另一个onblur()事件,该事件与ajax调用或填充的字段无关,但是采用相同的形式。但是,当我在java脚本中创建此函数时,事件不会被触发。更重要的是,原始的ajax调用也停止工作,即电话号码字段的onblur事件也不会被触发(我通过放置一些警报消息来证实这一点)。我被困了,并且鉴于我是一名新手网络开发者,这是一个烦躁的旅程。因此,任何帮助或推动正确的方向将不胜感激。

我的java脚本代码与我的HTML代码在同一个文件中,即在代码之间。当我在相同的脚本标签之间创建两个函数时,没有工作,但是当我将它们放在单独的脚本标签中时,第一个函数(电话号码后面的ajax调用)会在模糊时触发,但第二个函数则不会。这里的函数是:vldtnPhNo()和enabtnRegCmplt()。

<script type="text/javascript">

      function vldtnPhNo()
      {
        var xhr;
        var dvPhNo = document.getElementById("divPhNo");

        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();             

            var FoneNumb = document.getElementById("txtPhNo").value;

            xhr.open("POST", "verify.php", true);
            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");

            xhr.onreadystatechange=function() {
                if (xhr.readyState==4 && xhr.status==200) {

                    document.getElementById("txtRegInv").value = xhr.responseText;

                    var rstOftheTxt = xhr.responseText;


                        document.getElementById("txtPhNo").value=rstOftheTxt;
                        document.getElementById("txtPhPop").value=rstOftheTxt;
                    }
                    else
                    {
                        document.getElementById("txtPhNo").value='waiting';
                        document.getElementById("txtPhPop").value='waiting';
                    }
                }
            }

            xhr.send("txtPhNo=" + FoneNumb);


        }

        else 
        {
            throw new Error("Ajax is not supported by this browser");
        }
      }


      function enabtnRegCmplt(){

       If(txtRegInv.value!="")
       {
        var UsrNm;
        var Psswd;
        var RePsw;
        var PostBackInfo;

        UsrNm = document.getElementById('txtUsrNm');
        Psswd = document.getElementById('txtPsw');
        RePsw = document.getElementById('txtrePsw');
        txtRegInv = document.getElementById('txtRegInv');

        If (RePsw.value!="" && Psswd.value!="" && UsrNm.value!="" && RePsw.value==Psswd.value)
        {
           document.getElementById('btnRegCmplt').disabled="False";
        }
        else if(UsrNm.value=="")
        {
            UsrNm.value="Please Enter UserName";
        }
        else if(Psswd.value=="")
        {
            Psswd.value="Please Enter Password";
        }
        else if(RePsw.value=="")
        {
            RePsw.value="Does not match";
        }
       }
      }
     </script>

2 个答案:

答案 0 :(得分:0)

你的代码非常混乱。编写简洁代码所必需的原因之一。括号错误,因此整个代码都没有执行(else语句与function相关联。)

If语句不存在,请尝试使用if(小写)。

其他事项:

改为使用onkeyup

<强> 2 对于你可以做的变种:

var UsrNm,
    Psswd,
    RePsw,
    PostBackInfo
;

var UsrNm = document.getElementById('txtUsrNm'),
etc.

答案 1 :(得分:0)

语法错误

额外支撑}

        `else
                {
                    document.getElementById("txtPhNo").value='waiting';
                    document.getElementById("txtPhPop").value='waiting';
                }
            }
        }`

在else条件

之后删除一个大括号