Экспромт jQuery: форма отправляется еще до нажатия кнопки «Да» или «Нет». - PullRequest
1 голос
/ 02 июля 2010

Я использую jquery Экспромт для отправки одной из моих форм. В вышеупомянутом URL я использую Пример 2.

Теперь, когда я пытаюсь включить это в отправку формы, форма отправляется еще до того, как я нажимаю кнопку да / нет.

Я использую следующую строку кода для отправки формы

<input type="image" name="delete" src="images/delete.png" onclick="$.prompt('Are you sure??',{ buttons: { Ok: true, Cancel: false } })">

Я уверен, что что-то упустил. Может кто-нибудь помочь мне?

Спасибо,
Alloi

Ответы [ 3 ]

1 голос
/ 02 июля 2010

Попробуйте что-то вроде этого:

<input type="image" name="delete" src="images/delete.png" onclick="$.prompt('Are you sure??',{ buttons: { Ok: $('form#foo').submit(), Cancel: false } }); return false;">

Еще лучше, постарайтесь сделать свой JS ненавязчивым:

<input type="image" name="delete" src="images/delete.png" />

$('input[name=delete]').click(function() {
    $.prompt('Are you sure??',{
        buttons: {
            Ok: $('form#foo').submit(),
            Cancel: false
        }
    });
    return false;
});
1 голос
/ 07 августа 2013

Экспромт не ждет до исполнения.Поэтому не следует отправлять, пока пользователь не подтвердит операцию.

Используйте как это:

<input type="image" name="delete" src="images/delete.png" onclick="confirmAndDelete()">

с функцией javascript:

function confirmAndDelete(){

    var deleteFunc = function()
    {
        $('form#foo').submit();
    };

    $.prompt("Are you sure?", 
             {
               title: "Delete Confirm",
               buttons: { "Yes": true, "No": false },
               submit: function (e, val, m, f) {                            
                            if (val == true)
                                deleteFunc();
                            else
                                console.log('Delete not confirmed!');
                        }
              });

}
0 голосов
/ 02 июля 2010

Необычные подсказки, подобные этому, показывают сообщение на / над страницей, но они не приостанавливают выполнение, как alert и confirm. (Это то, что они имеют в виду на странице документации , когда они говорят "Это не предназначено для модальной замены ..." ) Так что, хотя вы показываете приглашение отправка формы продолжается.

Обычный способ справиться с этим - показать приглашение, но отменить отправку формы, а затем отправить форму программно, если пользователь говорит «Да».

По сути, вы:

  • Настройте обработчик отправки в форме, чтобы он отменял отправку, если ему было сказано
  • Настройте изображение, нажмите, чтобы сообщить форме, что нужно отменить отправку, и вместо этого показать приглашение
  • Настройте обработчик на кнопке «Да» для отправки формы
...