2017-02-16 7 views
-1

私のjQueryのある最初のクリックで動作していない:ハイパーリンクが呼び出されfucntionをクリックすると、yesまたはnoで、この確認メッセージをポップアップ表示され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を選択したとき、コントローラーに移動しませんでした。確認ポップアップは終了しますが、何も実行されません。 2回目にハイパーリンクをクリックするとすべて正常に動作します。 最初のクリックでアクションが呼び出されないようにするのは間違っていますか?

+0

' ' –

+4

クリックするとコードを呼び出した後、その要素にイベントをバインドします。それはあなたがそれを作る前にピザを食べるようなものです。 – epascarello

答えて

2

あなたの$(document).ready関数はあなたの確認関数内にあるので、最初に確認関数が実行されるまでclickイベントは添付されません。確認関数の外で$(document).ready関数を移動してみてください。

+0

ああ、それを逃した。これは正解です。 – jdmdevdotnet

+0

@AlGoreRhythm私は既に私のコメントでそれを与えている –

+1

@Anantあなたのコメントは読めない。 – jdmdevdotnet

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

       } 
      }); 
     } 
} 

ちょうど私の機能を使用して機能を交換してください。

+0

しかし、彼はこのコードを2度書く必要があります。 – 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>

関連する問題