0

私のHtmlコードは、

 <a title="Delete" onclick="if (confirm('Delete selected item?')){ return true; }else{ event.stopPropagation(); event.preventDefault();};" class="delete" href="link to delete page">
 </a>

このアラートの代わりに、特定の条件に基づいてアラート機能を提供したいのですが、そのユーザーがオプションを確認すると、削除ページに移動します。

私のJqueryコードは、

$('.delete').removeAttr('onclick').click(function(e) {
   e.preventDefault();
   var url = $(this).attr("href");
   var a = url.split('id_product=');
   var next = a[1];
   var id=next.split('&');    
   var base_url = $("#ajaxbase").val();
   $.ajax({
      type : "POST",    
      url : base_url+"modules/sample/ajax/sample.php",  
      data: {id:id[0]}      
   }).done( function( response ) {
      var res=$.trim(response); 
      if ( res == '1' ) {
         if ( confirm('This Product is configured in chain.Deleting this product will affect your chain.Are you sure to do this?') ) {
        return true;            
         } else {
        return false;
         }
      } else if ( res == '2' ) {
         if ( confirm('Are you sure to delete this product?') ) {
        return true;
         } else {
        return false;
         }
      }
 });

確認メッセージが表示されますが、ユーザーが確認しても削除ページに移動しませんでした。誰でも私を助けてください。

4

2 に答える 2

0

ajax 呼び出しの後に return false を追加し、別の ajax 呼び出しで結果を処理する必要があります。なぜなら、ajax 呼び出しは非同期であり、true/false が返されるのを待たないからです。

編集これはあなたが探しているものかもしれません

$('.delete').removeAttr('onclick').click(function(e) {
   e.preventDefault();
   var url = $(this).attr("href");
   var a = url.split('id_product=');
   var next = a[1];
   var id=next.split('&');    
   var base_url = $("#ajaxbase").val();
   $.ajax({
      type : "POST",    
      url : base_url+"modules/sample/ajax/sample.php",  
      data: {id:id[0]}      
   }).done( function( response ) {
      var res=$.trim(response); 
      if ( res == '1' ) {
         if ( confirm('This Product is configured in chain.Deleting this product will affect your chain.Are you sure to do this?') ) {
           window.location.href = url ;
         } 
      } else if ( res == '2' ) {
         if ( confirm('Are you sure to delete this product?') ) {
            window.location.href = url ;
         }
      }
     return false;
 });
于 2013-09-26T08:30:01.770 に答える
0

<a>非アンカー要素をより細かく制御することで、これを実現できます。通常、特定の要素の動作を完全に制御したい場合に適しています。また、それはよりきれいだと思います。

window.location.href最後に、元のインデントされた動作を続行することに注意してください。

<span class="delete" data-linkto="somepage.php">Delete</span>

<script>
    $('.delete').on('click', function() {

    var 
        url = $(this).data("linkto"),
        a = url.split('id_product='),
        next = a[1],
        id = next.split('&'),
        base_url = $("#ajaxbase").val(),
        verifyIfOne = confirm('This Product is configured in chain. '+ 
                              'Deleting this product will affect your chain. '+
                              'Are you sure to do this?'),
        verifyIfTwo = confirm('Are you sure to delete this product?'),
        Accepted = false;

       $.ajax({

          //Headers
          type : "POST",    
          url : base_url + "modules/sample/ajax/sample.php",  
          data: { id:id[0] }    

       }).done( function( response ) {

          var res = $.trim(response); 

          if ( res == '1' ) {
             if ( verifyIfOne ) {
                Accepted = true;         
             }
          } 

          if ( res == '2' ) {
             if ( verifyIfTwo ) {
                Accepted = true;
             }
          }
     /**
      *  User has agreed to go through with 
      *  the deletion.
     **/
     if ( Accepted )
         window.location.href = url;

     });
</script>
于 2013-09-26T07:06:57.070 に答える