2014-03-27 42 views
-1

我有三個單獨的javascript/jquery函數,所有這些函數在用戶單擊按鈕後觸發。一個函數發佈到表單處理程序。另一個函數創建一個新選項卡。第三個函數抓取新標籤的id,帖子通過ajax調用將新信息發送到標籤中。他們都在一起工作,彼此依賴。多個Javascript函數,需要確認對話框才能執行任何

我已經嘗試了很多不同的配置,並且我無法弄清楚如何正確地獲得確認對話框(例如,「您是否想執行此操作?」)以同時處理這三個操作?如果用戶單擊「是的,「這個過程應該會觸發,如果用戶點擊」否「,這個過程就會消失,任何幫助都將不勝感激。 ,這就是爲什麼我沒有發佈它的開始。試圖學習雖然。謝謝!

jQuery(".update_form").click(function(e) { // changed 
      e.preventDefault(); 
      jQuery.ajax({ 
        type: "POST", 
        url: "/eemcontrolpanel/process.cshtml", 
        data: jQuery(this).parent().serialize() // changed      
       }); 
      return false; // avoid to execute the actual submit of the form. 
     }); 

jQuery(".update_form").click(function() { 
       var form = jQuery(this).parents('form:first'); 
       title = jQuery("input[name='process']", form).val(); 


       $('#tt').tabs('add',{ 
        title:title, 
        content:'Script starting', 
        closable:true 
        }); 

        $('div.panel-body:last').attr("id","tab" + panelIds[panelIds.length - 1] + 1); 

        panelIds.push(panelIds[panelIds.length - 1] + 1); 
      }); 



      jQuery(".update_form").click(function (e) { 
       e.preventDefault(); 
       //var j = jQuery.noConflict(); 
       var form = jQuery(this).parents('form:first'); 
       var fileName = jQuery("input[name='process']", form).val(); 


       jQuery(document).ready(function() { 
       var XHR; 
       var stopMe = 1; 
       var isSame = 0; 
       var oldhtml;  
       var tabID = "tab" + panelIds[panelIds.length - 1]; 


       jQuery("#"+ tabID).everyTime(1000, function (i) { 


         if (stopMe != 2){ 

         XHR = jQuery.ajax({ 
          url: "/eemcontrolpanel/jobs/" + fileName + ".txt", 
          cache: false, 
          success: function (html){ 


           if (html === oldhtml){ 
            isSame++; 

             if (isSame === 10){ 
              stopMe = 2; 

              } 
             } 
             jQuery("#"+ tabID).html("<pre>" + html + "</pre>").scrollHeight; 
            oldhtml = html; 


            }         
           });       
          } else { 
           jQuery("#"+ tabID).stopTime(); 
          } 
          jQuery("#"+ tabID).css({ color: "white" }); 
         });       
       }); 
      }); 

這就是我最終做的。我基本上將所有功能組合成一個大功能。

  var panelIds = new Array();     
      panelIds.push('0'); 

     jQuery(".update_form").click(function (e) { 

      if (confirm('Are you sure?')) {     

      e.preventDefault(); 

      jQuery.ajax({ 
        type: "POST", 
        url: "/eemcontrolpanel/process.cshtml", 
        data: jQuery(this).parent().serialize() // changed      
       }); 

      var form = jQuery(this).parents('form:first'); 
      var title = jQuery("input[name='process']", form).val(); 


      $('#tt').tabs('add',{ 
       title:title, 
       content:'Script starting', 
       closable:true 
       }); 

       $('div.panel-body:last').attr("id","tab" + panelIds[panelIds.length - 1] + 1); 

       panelIds.push(panelIds[panelIds.length - 1] + 1); 


      //var j = jQuery.noConflict(); 

      var fileName = jQuery("input[name='process']", form).val(); 


      var XHR; 
      var stopMe = 1; 
      var isSame = 0; 
      var oldhtml;  
      var tabID = "tab" + panelIds[panelIds.length - 1]; 

      //alert(tabID);  

      jQuery("#"+ tabID).everyTime(1000, function (i) { 
       //alert(stopMe); 
        //add also if stopme=false else quit/end/whatever 
        if (stopMe != 2){ 
         //alert(stopMe); 
        XHR = jQuery.ajax({ 
         url: "/eemcontrolpanel/jobs/" + fileName + ".txt", 
         cache: false, 
         success: function (html){ 

           //alert(html); 
          if (html === oldhtml){ 
           isSame++; 
           //alert(isSame); 
            if (isSame === 10){ 
             stopMe = 2; 
             //alert(stopMe); 
             } 
            } 
            jQuery("#"+ tabID).html("<pre>" + html + "</pre>").scrollHeight; 
           oldhtml = html; 

           //alert(oldhtml); 
           }         
          });       
         } else { 
          jQuery("#"+ tabID).stopTime(); 
         } 
         jQuery("#"+ tabID).css({ color: "white" }); 
        });       


      } else { 

       return false; 
      } 
     }); 
+0

你能告訴我們你有什麼這麼遠嗎?一小段代碼可以解釋一種情況。 –

+0

http://www.w3schools.com/jsref/met_win_confirm.asp應該滿足您的需要。你能不能發一個你的代碼的例子和你遇到問題的地方? – eithed

+1

如果這三個按順序進行,您應該將其中一個放入前一個「完成」回調中......很抱歉,它可能聽起來有點天真,但如果沒有更多信息,不容易找出問題所在...... – Tallmaris

回答

0

你有沒有嘗試過這樣的:

Function onButtonPush(){ 
    if(confirm('confirm message')){ 
     function1(); 
     function2(); 
     function3(); 

    } 
} 
+0

非常感謝您的解決方案。這似乎並不奏效。我發佈了上面的代碼,以幫助您瞭解我的情況。 – seth2958

+0

在我看來,你喜歡你使用直接在事件監聽器中定義的匿名函數。神職人員工作,你需要將他們分成單獨的單獨功能。 – 2014-03-27 17:46:15