0

Я работаю над решением для отображения диалогового окна конфигурации для формы submit.jQuery Отложенные с помощью jQueryUI/диалоговые окна Bootstrap

В основном я хотел заменить встроенную функцию confirm() myown, поэтому я мог бы написать свою форму как <form onsubmit="customConfirm()"></form>. Я мог бы использовать обещания, поэтому я мог помешать отправке формы, отобразить диалог, вернуть обещание, а затем разрешить или отклонить это обещание после нажатия кнопок «ОК» и «Отмена».

Проблема заключается в том, что мой отложенный объект, кажется, игнорируется, оба done и fail функции называются - У меня есть created a little jsFiddle, который показывает, что я имею в виду.

Должен сказать, что я не работал с обещаниями, поэтому, возможно, я что-то делаю неправильно.

ответ

1

Я не совсем уверен, что вы собираетесь, но это работает просто отлично: http://jsfiddle.net/vvhttp4x/1/

var dfd = confirmDialog(); 
dfd.done(function() { 
    alert("done"); 
}); 
dfd.fail(function() { 
    alert("fail"); 
}); 

Это обещание так что если вы dfd.state() сразу вы всегда будете получать pending.

Вы должны продолжить свой код в обработчике done или fail.

+0

Thansk, это было быстро! Это заставило меня найти ответ, мне нужно обернуть мои вызовы функции «done» и «fail» в недоношенных функциях –

0

Ответ от @Halcyon заставил меня найти ответ.

Мне нужно было обернуть мои вызовы функций done и fail внутри анонимных функций.

var name = "Billy"; 
    var dfd = confirmDialog(); 
    $.when(
     dfd 
    ).then(function() { 
      alert('Hello there ' + name) 
      },function() { 
      alert('Goodbye ' + name) 
    }); 

Updated jsFiddle

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