отправить форму из диалогового окна Jquery UI - PullRequest
0 голосов
/ 31 марта 2011

Я хочу показать диалоговое окно JQuery-UI при отправке формы.У меня есть код, но у меня есть следующие идеи, и я хочу знать, какой из них был бы наиболее идеальным.

   var openDialog =function(){
      //set up dialog .
      var saveButton = // "OK" of dialog -> click event calls: submit the form
      var cancel = //  "Cancel" of dialog -> click event calls :close the dialog
   };

МЕТОД 01 я должен установить форму как

$('form').submit(function(evt){
   openDialog();
});

Сомнение если я сделаю это и вызову form.submit (), когда нажата кнопка saveButton, не вызывается openDialog, это создаст цикл. OR

МЕТОД 02 я должен настроить щелчок по кнопке / ссылке отправки в форме для вызова openDialog (), а также для отправки.Как бы я вызвал form.submit (), когда нажата кнопка «ОК» для подтверждения без запуска установки события отправки в форме.

* Редактировать: я был бы признателен, если бы на это можно было ответить *Это как говорится.Если у меня есть настройки аннотаций данных ASP.NET MVC на форме.Как настроить скрипт так, чтобы диалоговое окно открывалось только при запуске MicrosoftValidations.Я использую ASP.MVC 3.0 и не использую Jquery Validation / Validator.

BottomLine: Как мне настроить диалог, чтобы получить модальное диалоговое окно при попытке отправить форму

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Изящный подход деградации.С макушки моей головы ...

<form>
    <input type="submit" id="submit" text="Submit" />
</form>    

$("#submit").click(function ()
{
    // open dialog here

    return false;
});

Если JavaScript отключен, форма просто отправит.Но если JavaScript включен, событие click на кнопке отправки (в форме) откроет диалоговое окно и предотвратит отправку формы.Теперь вам нужно прикрепить событие click к кнопке «ОК» в диалоговом окне и отправить форму оттуда ...

$("#dialog_submit").click(function ()
{
    $("form").submit();
});
0 голосов
/ 31 марта 2011

Добавьте warnDefault (), чтобы не отправлять форму, чтобы вы могли отправить ее позже, с диалоговым окном

$('form').submit(function(evt){
   evt.preventDefault();
   openDialog();
   // I think return false should work too
   return false;
});

Редактировать: хорошо, существует бесконечный цикл. Чтобы избежать этого, вы должны отправить форму в openDialogс:

$('form')[0].submit()

В этом случае событие отправки не инициируется (проверено в Safari)

$().ready(function()
{
$('form').submit(function(evt){
   evt.preventDefault();
   openDialog();
   // I think return false should work too
   return false;
})
})

function openDialog()
{
    if(confirm("ok ?"))
        $('form')[0].submit()       
    else
        alert('form not submitted')
}
...