2017-02-16 38 views
-1

我jQuery是如下:jQuery的確認不首先點擊工作

function confirmRxAction(tNum) { 
    var aUrl = ""; 
    alert(tNum); 
    if (confirm("Are you sure you want to close?")) { 
    aUrl = "${pageContext.request.contextPath}/tax/executeoneTimeEx.html?tNum=" + tNum; 
    $("#aRx").click(); 
    } 

    $(document).ready(function() { 
    $("#aRx").click(function() { 

     xhr = $.ajax({ 
     type: "POST", 
     url: aUrl, 
     dataType: "text", 
     error: function(XMLHttpRequest, errorThrown) {}, 
     success: function(ajaxResult, testStatus) { 

      if (ajaxResult.length > 0) 
      alert(ajaxResult); 
      else 
      afterUpdate(); 

     } 
     }); 

     return false; 
    }); 
    }); 
} 

當超級鏈接被點擊的溫控功能被稱爲與yes或no彈出此確認消息。 當我第一次選擇是的時候,控制器沒有轉到控制器。確認彈出窗口關閉,但不採取任何操作。 所以我去第二次點擊超鏈接,一切工作正常。 什麼是錯誤,防止在第一次點擊時被調用的動作?

+0

'' –

+4

您在調用代碼點擊該元素後,將元素上的事件綁定。這就像在製作披薩之前吃披薩一樣。 – epascarello

回答

2

您的$(document).ready函數位於您的confirm函數中,因此只有在確認函數第一次運行時纔會附加click事件。嘗試將$(document).ready函數移到confirm函數之外。

+0

啊,是的,錯過了。這是正確的答案。 – jdmdevdotnet

+0

@AlGoreRhythm我已經在我的評論中給出 –

+1

@Anant您的評論不可讀。 – jdmdevdotnet

0

不知道爲什麼你writen你這樣的代碼,但你應該使用像下面::

function confirmRxAction(tNum){ 
    var aUrl = ""; 
    alert(tNum); 
    if(confirm("Are you sure you want to close?")) { 
      aUrl = "${pageContext.request.contextPath}/tax/executeoneTimeEx.html?tNum=" + tNum; 
      xhr = $.ajax({type: "POST", 
       url: aUrl, 
       dataType: "text", 
       error: function(XMLHttpRequest, errorThrown){        
       }, 
       success: function(ajaxResult, testStatus){ 

        if(ajaxResult.length>0) 
         alert(ajaxResult); 
        else 
         afterUpdate(); 

       } 
      }); 
     } 
} 

與我的功能只需更換你的函數。

+0

但是之後他必須寫這個代碼兩次。 – jdmdevdotnet

+0

@AlGoreRhythm爲什麼? –

+0

因爲他也會在他的點擊事件中需要它。無論哪種方式,如果它是一個函數,你的解決方案會更好。雖然無關緊要,因爲問題在於他的'document.ready'在他的功能中,這就是爲什麼它不適合他。 – jdmdevdotnet

0

我建議設置點擊準備文件而不是。並在click()中添加確認,就像片段示例中一樣。

function afterUpdate() { 
 
    alert("after update"); 
 
} 
 

 
$(document).ready(function() { 
 
    $("#aRx").click(function(event) { 
 
    event.preventDefault(); 
 
    if (confirm("Are you sure you want to close?")) { 
 
     
 
     xhr = $.ajax({ 
 
     type: "GET", 
 
     url: "http://services.groupkt.com/country/get/all", 
 
     dataType: "json", 
 
     error: function(XMLHttpRequest, errorThrown) { 
 
      alert("error" + errorThrown); 
 
     }, 
 
     success: function(data) { 
 
       if (data != null) 
 
       alert(data); 
 
       else 
 
       afterUpdate(); 
 
     } 
 
     }); 
 
    } 
 
    return false; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a id="aRx" href="#">Click Here</a>