2010-03-10 12 views
9

Mam wiele formularzy na stronie, dla każdego z nich chcę, aby użytkownik potwierdził przed przesłaniem formularza. ale kiedy użytkownik potwierdzi, aby przesłać, w jaki sposób powiadomić to okno dialogowe, w którym formularzu użytkownik się znajduje? Czy wymaga niestandardowych parametrów? Dzięki.Korzystanie z okna dialogowego jquery ui w celu potwierdzenia operacji przesyłania formularza

$("#dialog-confirm").dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: { 
      'Confirm submit': function() { 
       document.______???????_____.submit(); 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
    }); 
$('.allForms').submit(function(){ 
     $('#dialog-confirm').dialog('open'); 
}); 

Odpowiedz

17

Można przechowywać ją w zmiennej takiego:

var currentForm; 
$("#dialog-confirm").dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: { 
      'Confirm submit': function() { 
       currentForm.submit(); 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
    }); 
$('.allForms').submit(function(){ 
     currentForm = this; 
     $('#dialog-confirm').dialog('open'); 
     return false; 
}); 

Skoro jesteś po prostu za pomocą tego i natychmiast po opuszczeniu strony, żadnego powodu, aby to bardziej skomplikowane niż to.

+0

Dzięki. ale teraz, po tym jak kliknąłem "Potwierdź przesłanie", po prostu wywołuje $ ('. allForms'). submit (function()) ponownie i tak naprawdę nie przesłał. Czy to inny problem? – redbluegreen

+3

@redbluegreen - Woops, zaktualizował odpowiedź ... że 'currentForm = this;' nie powinno być zapakowane w '$()' –

1

Albo jak o

$(this.form).submit(); 
0

podstawie Nick Craver swoją odpowiedź, możesz napisać to w ten sposób:

$('.allForms').submit(function(){ 
     currentForm = this; 

     $('#dialog-confirm').dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: { 
      'Confirm submit': function() { 
       currentForm.submit(); 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
     }); 
     return false; 
}); 
Powiązane problemy