2010-08-19 3 views
0

у меня есть проблемы с jConfirm, он должен работать так же, как нормальный яваскрипта подтверждается кнопкой поле, но это не так, вот примерПредотвратить скрипт от работы с использованием jConfirm как родной подтверждают

<input type="submit" value="click" onClick="return jConfirm('are you sure?')"> 

Если я использую нормальный подтвердите, что он останавливает скрипт до тех пор, пока не будет получен ответ, но jConfirm все равно отправляется, даже если ответа не сообщается, каких-либо обходных решений?

Заранее спасибо

EDIT1: Используя Slaks идею я пытаюсь настроить jAlert плагин по умолчанию, вот что я получил.

submit: function(message, title, btnId) { 
      $.alerts._show(title, message, null, 'confirm', function(result, btnId) { 
       if (result){ 
        var form = $('#'+btnId).closest('form'); 
        form.trigger('submit'); 
       }   
       else 
        return false 
      }); 
}, 

Проблема заключается в том, что я не знаю, как передать переменную «btnId» функции обратного вызова _show, какие мысли?

+0

Это поможет вам добавить код, чтобы мы могли видеть, что вы делаете. В противном случае мы просто собираемся снимать в темноте, что никому не помогает. – JasCav

ответ

0

В конце концов я фиксированной это так, отправляя кнопку на кнопку (с «это» при вызове функции), я могу получить форму, а затем отправить ее, я также могу прикрепить скрытый ввод нажатой кнопкой, чтобы я мог выполнить правильное действие с PHP.

submit: function(message, title, btnObj) { 
      $.alerts._show(title, message, null, 'confirm', function(result) { 
       if (result){ 
        var form = $(btnObj).closest('form'); 
        var input = '<input type="hidden" name="action" value="'+$(btnObj).attr('value')+'">'; 
        $(form).append(input); 
        form.trigger('submit'); 
       } 
       else 
        return false 
      }); 
     }, 
0

Как это:

<input type="submit" value="click" onClick="jConfirm('are you sure?', function(r) { if (r) document.forms[something].submit(); }); return false;"> 

Было бы гораздо лучше двигаться, что в отдельный обработчик:

$(':submit').click(function(e) { 
    e.preventDefault();  //Don't submit until the user hits yes 
    var form = $(this).closest('form'); 
    jConfirm('Are you sure?', function(r) { 
     if (r) form.submit(); 
    }); 
}); 
+0

Я читал, что функция preventDefault не работает в IE, дает ошибку javascript – Kusanagi2k

+0

@Antonio: jQuery исправляет это. – SLaks

0

Вы также могли бы сделать нормальную форму, а затем:

$('.submitButton').click(function(event) { 
    if(!confirm('Are you sure you want to delete this customer?')) { 
     event.preventDefault(); 
    } 
}); 
0

Проблема у Вас есть проистекает из того факта, что вы пытаетесь использовать асинхронную функцию, как если бы это были синхронны. Я подробно обсуждаю это в my answer to a similar question.

Обычный JavaScript confirm() будет работать в вашем случае только потому что он синхронный. И просто невозможно создать собственный синхронный диалог подтверждения в браузере с JavaScript и HTML.

Чтобы использовать диалоговое окно для подтверждения пользовательского представления формы, вам необходимо:

  1. Всегда возвращение false из обработчика onsubmit или onclick.
  2. В обработчике подтверждения отправьте форму с помощью JavaScript. Т.е., myForm.submit().