2014-03-27 6 views
-1

У меня есть три отдельные функции javascript/jquery, все из которых срабатывают после нажатия пользователем кнопки. Одна функция отправляется в обработчик формы. Другая функция создает новую вкладку. Третья функция захватывает идентификатор новой вкладки и сообщения отправляет новую информацию на вкладку с помощью вызова ajax. Все они работают вместе и зависят друг от друга.Несколько функций Javascript, необходимо подтвердить диалог перед выполнением каких-либо

Я пробовал много разных конфигураций, и я не могу понять, как правильно получить диалоговое окно подтверждения (например, «Вы хотите выполнить это действие?») Для работы со всеми тремя из них одновременно. Если пользователь нажимает кнопку " да,». процесс должен стрелять Если пользователь нажимает кнопку„нет“, этот процесс должен умереть Любая помощь очень ценится

Edit:... Я отправил свой код, я уверен, что это действительно noobish , поэтому я не опубликовал его с самого начала. Спасибо!

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

Похоже, что вы используете анонимные функции, определенные непосредственно в прослушивателях событий. Чтобы это сработало, вам нужно разделить их на отдельные отдельные функции. –

Смежные вопросы