如果我不重新加载页面,jquery不会加载

时间:2012-01-17 16:32:44

标签: javascript jquery

此代码仅在我重新加载/刷新页面时有效,否则它不起作用,我认为问题是,因为我使用Jquery +普通的javascript。

我有表格并且有输入使用自动完成,但是当你接下来通过表格时,它不起作用。

关键是#SchoolName的输入不是第一页上的第二页(在showcart()之后;函数是三角形的)......

任何人都有任何想法为什么我的jquery代码没有正确加载?

我有这段代码:

<script type="text/javascript" language="javascript">
    function autocomplete() {
        $("#SchoolName").autocomplete("ajaxFuncs.php", {
            cacheLength:1,
            mustMatch:1,
            extraParams: {getSchoolName:1}
        });
    };

    $(document).ready(function(){
        setTimeout("autocomplete()", 500);
    });

    function showVal(str) {
        if (str == "") {   
            document.getElementById("txtHint").innerHTML = "* Please type in School Name.";
            return;
        }
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
        }

        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) { // break this into 2 statements so you can handle HTTP errors
                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
                } else {
                document.getElementById("txtHint").innerHTML = "AJAX Error (HTTP "+xmlhttp.status+")";
                }
            }
        }; // functions declared in this way should be followed by a semi colon, since the function declaration is actually a statement.

        // encodeURIComponent() does all the escaping work for you - it is roughly analogous to PHP's urlencode()
        // xmlhttp.open("GET","ajaxFuncs2.php?q="+encodeURIComponent(str),true);

        xmlhttp.open("GET","ajaxFuncs2.php?q="+encodeURIComponent(str),true);
        xmlhttp.send();
    }
</script>



<script>
    function ajax(doc)
    {
        doc = null;
        if (window.XMLHttpRequest) {
            try {
                doc = new XMLHttpRequest();
            }
            catch(e) {
                if(SBDebug) 
                    alert("Ajax interface creation failure 1");
            }
        }
        else if (window.ActiveXObject) {
            try {
                doc = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(e) {
                try {
                    doc = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(e) {
                    if(SBDebug)
                        alert("Ajax interface creation failure 2");
                }
            }
        }
        return doc;
    }



    function postIt(params) {
        var doc;
        // alert("postIt: " + params);  

        if(params == "")
            params = "nada=0";

        doc = ajax(doc);

        if (doc) {
            var url = window.location.href;
            url = url.substr(0, url.lastIndexOf("/") + 1) + "clientCartPost.php";

            // alert(url);
            doc.open("POST", url, false);

            //Send the proper header information along with the request
            doc.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            doc.setRequestHeader("Content-length", params.length);
            doc.setRequestHeader("Connection", "close");

            document.body.style.cursor = "wait";
            doc.send(params);
            document.body.style.cursor = "default";

            if(doc.responseText == "timeout") {
                alert("Timed out");
                document.location = "index.php";
            }
            return doc.responseText;
        }
        return "Connection Failed";
    }





    function saveCC() {
        var doc;
        doc = ajax(doc);

        if(params == "")
        params = "nada=0";

        if (doc) {
            var params = "";
            var eVisi = document.getElementById("visiCard");
            var eCard = document.getElementById("x_card_num");

            if(eVisi.value.indexOf("*") < 0)
                eCard.value = eVisi.value;

            for(i=0; i<document.CC.elements.length; i++) {
                if(document.CC.elements[i].name == "visiCard")
                    continue;

                params += getElemValue(document.CC.elements[i]) + "&";
            }

            doc.open("POST", "https://dot.precisehire.com/clientCartStoreCard.php", false);

            //Send the proper header information along with the request
            doc.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            doc.setRequestHeader("Content-length", params.length);
            doc.setRequestHeader("Connection", "close");

            document.body.style.cursor = "wait";
            doc.send(params);
            document.body.style.cursor = "default";

            // alert(doc.responseText);
            return true;
        }
        return false;
    }



    function getElemValue(item)

    {

    // alert("Getting: " + itemBase + itemID);

    // alert(itemBase + "" + itemID);

        if(item.type == "radio" || item.type == "checkbox")

        {

            if(!item.checked)

                return "";

        }

        if(item.type == "select-one")

        {

            value = item.options[item.selectedIndex].value;

        }

        else

            value = item.value;

        return item.name + "=" + escape(value) + "&";

    }



    function    makePie()

    {

        var contents = postIt("command=getProgress");



        document.getElementById("step2").className = "bx2";

        document.getElementById("step3").className = "bx2";

        document.getElementById("step4").className = "bx2";

        if(contents > 0)

            document.getElementById("step2").className = "bx1";

        if(contents > 1)

            document.getElementById("step3").className = "bx1";

        if(contents > 2)

            document.getElementById("step4").className = "bx1";

    }



    var gbColor;



    function    RedIn(start)

    {

        var id;



        if(start)

            gbColor = 0;

        gbColor += 32;

        if(gbColor > 255)

            gbColor = 255;

        id = 0;

        var obj = document.getElementById("red" + id);

        while(obj != undefined)

        {

            obj.style.backgroundColor = 'rgb(255,' + gbColor + ',' + gbColor + ')'; 

            id++;

            obj = document.getElementById("red" + id);

        }

        if(gbColor < 255 && id > 0)

            setTimeout("RedIn(0)", 100);

    }



    function    showCart(next)

    {

        var ca = document.getElementById("cartArea");

        var params = "";



        for(i=0; i<document.clientCart.elements.length; i++)

        {

            param = getElemValue(document.clientCart.elements[i]);

            if(param != "")

                params += param + "&";

        }

        if(next)

            params += "Next=1";

    // alert(params);

        ca.innerHTML = postIt(params);



        makePie();

    //  RedIn(1);

    }



    function    tabIfComplete(formField, maxSize, nextField, e)

    {

        if(window.event) // IE

        {

            keynum = e.keyCode;

        }

        else if(e.which) // Netscape/Firefox/Opera

        {

            keynum = e.which;

        }

        if(keynum < 48)

            return;

        if(formField.value.length >= maxSize)

        {

            var nf = document.getElementById(nextField);



            if(nf)

                nf.focus();

        }

    }



    function    sendCommand(command)

    {

        var ca = document.getElementById("cartArea");

        var params = "command=" + command;

        var submitOrder = command.indexOf('submitOrder') >= 0;

    // alert(command);

        if(submitOrder)

        {

            if(document.getElementById("RESULT").checked)

            {

                params += "&postSettlement=result";

    /*

                n = postIt(params);

                alert(nOID);

                if(nOID > 0)

                    document.location="orderreview.php?id=" + nOID;

                return;

    */

            }

            else if(document.getElementById("REPORT").checked)

            {

                params += "&postSettlement=report";

            }

            else if(document.getElementById("DUPEORDER").checked)

            {

                params += "&postSettlement=dupeorder";

            }

            postIt(params);

            document.location="cart.php";

            return;

        }

        else if(command.indexOf('priorSearches') >= 0)

        {

            document.location="orderreview.php?ssnlist=1";

        }

        else if(command.indexOf('addState') >= 0)

        {

            for(i=0; i<document.clientCart.elements.length; i++)

            {

                if(document.clientCart.elements[i].name != "Next")

                    params += "&" + getElemValue(document.clientCart.elements[i]);

            }

        }

        ca.innerHTML = postIt(params);

        makePie();

    }



    function    doReset()

    {

        var ca = document.getElementById("cartArea");



        ca.innerHTML = "";

        ca.innerHTML = postIt("reset=1");

        makePie();

    }



    function    dupeOrder()

    {

        var ca = document.getElementById("cartArea");



        ca.innerHTML = "";

        ca.innerHTML = postIt("dupeOrder=1");

        makePie();

    }



    function    resetCart()

    {

        if(confirm("Empty current cart and start over? Are you Sure?"))

            doReset();

    }



    function    saveCart()

    {

        var ca = document.getElementById("cartArea");

        var params = "";



        for(i=0; i<document.clientCart.elements.length; i++)

        {

            params += getElemValue(document.clientCart.elements[i]) + "&";

        }

        params += "saveExit=1";

        ca.innerHTML = postIt(params);

        makePie();

        RedIn(1);

    }



    function    deleteOrderItem(command)

    {

        if(!confirm("Delete this search? Are you Sure?"))

            return;



        var ca = document.getElementById("cartArea");

        var params = "command=" + command;



        ca.innerHTML = postIt(params);

        makePie();

    }



    // alert("Reloaded");



    setTimeout("showCart();", 100);

</script>

4 个答案:

答案 0 :(得分:1)

尝试移动最后一行:

setTimeout("showCart();", 100);

...进入$ .ready-function:

$(document).ready(function(){
    setTimeout("autocomplete()", 500);
});

否则可能会发生showCart()在您在showCart()中访问的元素已知之前被调用。

答案 1 :(得分:1)

首先:结合jQuery +常规javascript不是问题 - jquery是由常规的javascript组成的。

其次,当你将一个方法传递给你的回调参数时,你通常可以只写出方法的名称:

$(document).ready(function(){
    setTimeout(autocomplete, 500);
});

第三,使用XMLHttpRequest同时也使用jquery的问题。 Jquery有一个XHR版本,它比那更符合跨浏览器标准,你应该使用它:

$.ajax()

最后,请在代码开头的实际jquery文件中添加一个include ..

<script type="text/javascript" src="jquery.js"></script>

答案 2 :(得分:1)

很抱歉,在格式化代码时,真的很难做到。

我现在看到了一些问题: -

  1. function autocomplete() {首先此功能使用分号
  2. 关闭};
  3. 以下是重复代码: -

      //Send the proper header information along with the request
    doc.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    doc.setRequestHeader("Content-length", params.length);
    doc.setRequestHeader("Connection", "close");
    document.body.style.cursor = "wait";
    doc.send(params);
    document.body.style.cursor = "default";</li>
    
         

  这可以通过传递适当的参数进入单个函数调用。

3.如果您使用的是JQuery,则不需要XMLHttpRequest 4.要更新......

答案 3 :(得分:1)

在Firefox / Chrome中打开一个javascript控制台(Ctrl-Shift-J),在菜单栏中查看其他浏览器并查看显示的错误