2011-06-27 25 views
0

私は確認ボックスを停止する必要がある状態で私は殴られました。これは私がやっていることです:javascriptの確認ウィンドウを停止する必要があります

function onBeforeClientInsert(record) { 
    var eventtype = parseInt(record. < %= CEO.FieldEvaluator.GetEvaluatorByDId("EVENT_TYPE_ID").GetFieldDataFieldId() % >); 
    var begindate = record. < %= CEO.FieldEvaluator.GetEvaluatorByDId("BeginDate").GetFieldDataFieldId() % > ; 
    var enddate = record. < %= CEO.FieldEvaluator.GetEvaluatorByDId("EndDate").GetFieldDataFieldId() % > ; 

    $.ajax({ 
     type: "POST", 
     url: "Data.aspx/CheckInsertRecord", 
     data: "{EventType:'" + eventtype + "',BeginDate:'" + begindate + "'," + "EndDate:'" + enddate + "' }", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 

      if (msg.d == "No duplicate") { 

      } else { 
       alert(msg.d); 
       eval("var data = " + msg.d + ";"); 

      } 
      var i = 0; 
      alert(i); 
      alert(data[i]); 
      do { 
       $("#beginDate").html(data[i].BeginDate); 
       $("#eventTypeID").html(data[i].EVENT_TYPE_ID); 
       $("#endDate").html(data[i].EndDate); 
       $("#beginlatlong").html(data[i].BeginLATLONG); 
       $("#endlatlong").html(data[i].EndLATLONG); 

       var modal = document.getElementById('Div1'); 
       modal.style.display = ''; 
       modal.style.position = 'fixed'; 
       modal.style.zIndex = '100'; 
       modal.style.left = '30%'; 
       modal.style.top = '10%'; 


       var screen = document.getElementById('modalScreen'); 
       screen.style.display = ''; 
       i++; 
       if (confirm("Are you sure you want to continue?") == false) { 
        hide(); 
        continue; 
       } 


      } 

      while (msg.d != null); 
     } 
    }); 


    if (confirm("Are you sure you want to insert this new record ?") == false) { 
     hide(); 
     return false; 
    } 
    if (Page_ClientValidate("<%= CEO.GridUtils.Global_ValidationGroupName%>")) { 
     hide(); 
     SetPostBackCause('INSERT'); 
     return true; 
    } 
    return false; 
} 

ので、問題は

if (confirm("Are you sure you want to insert this new record ?") == false) { 
    hide(); 
    return false; 
} 

が確認ボックス

if(confirm("Are you sure you want to continue?")==false){ 
    hide(); 
    continue; 
} 

後すぐに実行されるだろうということであったが、私はそれを停止することにしたいですユーザーが最初の確認ボックスで何かをクリックするまで。どうすればいいですか?また、もし私が間違った方法でそれに近づいているなら、これを行うための他の方法を教えてもらえますか?

+0

このコードを入手したら、[コードレビュー](http://codereview.stackexchange.com)にクリーンアップの提案を投稿してください**。 –

+0

@Matt:確かに投稿します – Sayamima

答えて

2

Ajaxは非同期です。

すべて従属コードをsuccessコールバックに移動する必要があります。

success: function (msg) { 
    // snip ... 

    if (confirm("Are you sure you want to insert this new record ?") == false) { 
     hide(); 
    } 
    if (Page_ClientValidate("<%= CEO.GridUtils.Global_ValidationGroupName%>")) { 
     hide(); 
     SetPostBackCause('INSERT'); 
    } 
} 

あなた要求sychronousを作るためにasync: falseを使用することができますが、私はありませんはこれをお勧めします

+0

私はこれを試しました...しかし、2番目の確認ボックスは呼ばれていません – Sayamima

1

あなたは、このすべて配置する必要があります:あなたはそれが最初のダイアログの後に実行したい場合は、あなたのAJAXコールバック内

if (confirm("Are you sure you want to insert this new record ?") == false) { 
     hide(); 
     return false; 
    } 
    if (Page_ClientValidate("<%= CEO.GridUtils.Global_ValidationGroupName%>")) { 
     hide(); 
     SetPostBackCause('INSERT'); 
     return true; 
    } 

を。現在、コールバックを設定して、上記のコードを呼び出します。あなたのインターネット接続が本当に遅かった場合、あなたが見ている最初のダイアログは理論的には見ている秒の後に来る可能性があります。

+0

私はそれを成功関数に保つように試みましたが、2番目の適合ボックスは表示されません。 – Sayamima

0

$ .ajaxのasync:falseオプションを考慮しましたか?

+0

いいえ私はそれを試してみる – Sayamima

関連する問題