jquery确认第一次点击不起作用

时间:2017-02-16 15:09:53

标签: javascript jquery jquery-ui

我的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弹出此确认消息。 当我第一次选择是时,控件不会转到控制器。确认弹出窗口关闭,但不执行任何操作。 所以我第二次点击超链接,一切正常。 有什么错误阻止在第一次点击时调用操作?

3 个答案:

答案 0 :(得分:2)

你的$(document).ready函数在你的确认函数中,所以在第一次运行确认函数之前,不会附加click事件。尝试在确认功能之外移动$(document).ready函数。

答案 1 :(得分:0)

不知道你为什么写这样的代码,但你应该像下面这样使用它:

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();

                }
            });
        }
}

只需用我的功能替换你的功能。

答案 2 :(得分: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>