2017-02-16 42 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>