0

各位程序员好。我是 jquery ajax 的新手。我如何从 if 块中调用函数 checkreturn() 或者是否可以在成功之外访问 msg 如果是,请告诉我如何。我需要它,因为只有当条件证明为真时,我才必须启用后续文本框。这是我的代码。提前感谢您的时间和回复。Rajesh。

<script type="text/javascript" >    

        function checkreturn()        {   

            document.getElementById("txtAns").removeAtrribute("disabled");                     
        }
        function cQtn(e){             
        var uname= $("#<%=Username.ClientID%>").val();
        var sq=$("#<%=SecQuest.ClientID%>");
        var sqtn = $("#<%=SecQuest.ClientID%> option:selected").text();
        var sans=$("#txtAns");      
        var msgbox = $("#Dstatus");
          $.ajax({
                    type: "POST",                    
                    url: "forgotpassword.aspx/CheckValidSQtn",
                    data: "{'uname':'"+uname+"','args':'"+sqtn+"'}", 
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {                                                                                                             
                         if (msg.d == 'Available') {                            
                            sq.removeClass("notavailablecss");
                            sq.addClass("availablecss");
                            msgbox.html('<img src="proj_mages/a.png"> <font color="Green"> Valid </font>');
                            //how do i call from here??                                                                                                              
                           }
                        else {                            
                            sq.removeClass("availablecss");
                            sq.addClass("notavailablecss");
                            msgbox.html(msg.d);                           
                        }                        
                    }                                                 
                });                                     
      }     

    </script>
4

3 回答 3

2

您的checkreturn函数中有错字。您想使用removeAttribute, 而不是removeAtrribute(double t,not double r)。

此外,您可以使用jQuery以下功能:

function checkreturn(){   
    $('#txtAns').prop('disabled',false);                
}

, 而不是本机DOM函数 ( document.getElementById, setAttribute):

于 2012-06-18T14:26:16.867 回答
0

不知道为什么正常方式不起作用,但您可以尝试强制浏览器应该做什么,

function checkreturn(){   
     document.getElementById("txtAns").removeAtrribute("disabled");                     
}

变成

window.checkreturn = function(){   
     document.getElementById("txtAns").removeAtrribute("disabled");                     
}

然后尝试通过调用,window.checkreturn();或者checkreturn();您也可以尝试以另一种方式调用,这样您就可以离开您的函数并尝试调用window.checkreturn();

如果这些都不起作用,则表示您的函数未进入页面的窗口(全局)范围,请使用 Firebug 或 Inspector 并尝试checkreturn();查看您返回的异常,

如果你得到一个 not found 你没有在你的代码中向我们展示一些东西可能是一个闭包或一些东西

于 2012-06-18T14:17:52.887 回答
-1

我会进一步研究它,但尝试async设置ajax调用false

function checkreturn() {

    document.getElementById("txtAns").removeAtrribute("disabled");

}

function cQtn(e) {

    var uname= $("#<%=Username.ClientID%>").val(),
        sq=$("#<%=SecQuest.ClientID%>"),
        sqtn = $("#<%=SecQuest.ClientID%> option:selected").text(),
        sans=$("#txtAns"),
        msgbox = $("#Dstatus");

    $.ajax( {
        async: false,
        type: "POST",
        url: "forgotpassword.aspx/CheckValidSQtn",
        data: "{'uname':'"+uname+"','args':'"+sqtn+"'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            if (msg.d == 'Available') {
                sq.removeClass("notavailablecss");
                sq.addClass("availablecss");
                msgbox.html('<img src="proj_mages/a.png"> <font color="Green"> Valid </font>');
                //how do i call from here??
            } else {
                sq.removeClass("availablecss");
                sq.addClass("notavailablecss");
                msgbox.html(msg.d);
            }
        }
    } );

}

现在,当进行ajax调用时,脚本的其余部分将等待它完成,而不是在asyncis时一切继续true

于 2012-06-18T14:20:39.623 回答