2012-06-18 42 views
0

各位程序員,您好!我是jquery ajax的新手。 如何從if塊調用函數checkreturn()或者如果是,那麼是否可以在成功之外訪問msg,然後請讓我知道如何。我需要它,因爲只有條件證明是正確的,我必須啓用後續的文本框。這是我的代碼。提前感謝您的時間和回覆。拉傑什。成功調用if函數中的函數

<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> 
+5

就叫做別的地方一樣嗎? 'checkTurn();' – sachleen

+0

checkreturn()在這種情況下,但是。 –

+0

它沒有被調用,我試了一下。有沒有一種方法可以啓用if塊本身的文本框控件? –

回答

0

不知道爲什麼正常的方式是行不通的,但你可以嘗試迫使什麼瀏覽器是應該做的,

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

變爲

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

然後嘗試通過window.checkreturn();調用或checkreturn();你也可以這樣嘗試這種方式,因此你可以離開你的功能並嘗試撥打電話window.checkreturn();

如果這些正在它會說你的函數不進入窗口(全球)範圍內爲您的網頁使用Firebug的或檢查,並嘗試所有checkreturn();看看你會得到什麼例外回來,

如果你得到一個沒有找到您不向我們展示你的代碼中的一些事情也許倒閉或一些東西

-1

我會考慮它進一步,但拉昇ajax呼叫設置asyncfalse

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時,腳本的其餘部分將等待它完成,而不是在asynctrue時所有內容都繼續。

2

您的checkreturn函數中有一個錯字。您希望使用removeAttribute而不是removeAtrribute(雙重t,而不是雙重r)。

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

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

,而不是本地DOM功能(document.getElementByIdsetAttribute):