Проблема обратного вызова Jquery Impromptu - ошибка $.prompt
У меня проблема с jQuery Impromptu, в частности $.prompt с функцией обратного вызова для встроенной формы.
Теперь конкретная проблема заключается в следующем. Если email_address
поле пустое при отправке я не могу получить $.prompt('Please supply an email address for the customer')
работать, однако, если я изменю его на alert('Please supply an email address for the customer')
это будет работать.
Я предполагаю, что это проблема сфер $.prompt
вызовы работают, как и ожидалось, что я предполагаю, потому что они находятся внутри $.post
функция обратного вызова.
Я изо всех сил пытался найти огромное количество документации функциональности формы обратного вызова, и хотя я чувствую, что понимаю e
, v
а также f
переменные, m
(Сообщение) это не то, что я использовал раньше. Когда я вхожу m
в журнале консоли это выглядит как объект jQuery Impromptu, однако я не уверен, как получить к нему доступ. я пытался m.prompt()
а также $.m.prompt()
но это всего лишь догадки о том, как я хотел бы получить доступ к prompt
функция.
Javascript
var txt = '<input type="text" name="email_address" value="" />';
function mycallbackform(e,v,m,f)
{
if(v != undefined)
{
if (v == true)
{
console.log(f);
if (f.email_address.length == 0)
{
console.log(m);
$.prompt('Please supply an email address for the customer');
}
else
{
$.post('". $this->view->url(array(), 'admin-create-user-from-checkout') ."', f, function(data) {
if(data.status)
{
$.prompt('Customer Record Created Successfully');
}
else
{
$.prompt('Customer Record could not be created');
$('#email_address').val($('#old_email_address').val());
}
}, 'json');
}
}
else
{
$('#email_address').val($('#old_email_address').val());
}
}
$.prompt(txt,{callback: mycallbackform, buttons: { Ok: true, Cancel: false }});
Консольный журнал дляm
Object[div.jqimessage]
0
div.jqimessage
context
undefined
jquery
"1.7.2"
length
1
prevObject
Object[div#jqi_state_state0.jqi_state]
selector
".children(#jqi) #jqi_st...0.children(.jqimessage)"
constructor
function()
init
function()
_toggle
function()
add
function()
addClass
function()
affix
function()
after
function()
ajaxComplete
function()
ajaxError
function()
ajaxSend
function()
ajaxStart
function()
ajaxStop
function()
ajaxSuccess
function()
alert
function()
andSelf
function()
animate
function()
append
function()
appendTo
function()
attr
function()
before
function()
bind
function()
blur
function()
button
function()
carousel
function()
change
function()
children
function()
clearQueue
function()
click
function()
clone
function()
closest
function()
collapse
function()
contents
function()
contextmenu
function()
css
function()
data
function()
dblclick
function()
delay
function()
delegate
function()
dequeue
function()
detach
function()
die
function()
domManip
function()
dropdown
function()
each
function()
empty
function()
end
function()
eq
function()
error
function()
extend
function()
fadeIn
function()
fadeOut
function()
fadeTo
function()
fadeToggle
function()
filter
function()
find
function()
first
function()
focus
function()
focusin
function()
focusout
function()
get
function()
has
function()
hasClass
function()
height
function()
hide
function()
hover
function()
html
function()
index
function()
innerHeight
function()
innerWidth
function()
insertAfter
function()
insertBefore
function()
is
function()
keydown
function()
keypress
function()
keyup
function()
last
function()
live
function()
load
function()
map
function()
modal
function()
mousedown
function()
mouseenter
function()
mouseleave
function()
mousemove
function()
mouseout
function()
mouseover
function()
mouseup
function()
next
function()
nextAll
function()
nextUntil
function()
not
function()
off
function()
offset
function()
offsetParent
function()
on
function()
one
function()
outerHeight
function()
outerWidth
function()
parent
function()
parents
function()
parentsUntil
function()
popover
function()
position
function()
prepend
function()
prependTo
function()
prev
function()
prevAll
function()
prevUntil
function()
promise
function()
prompt
function()
promptDropIn
function()
prop
function()
push
push()
pushStack
function()
queue
function()
ready
function()
remove
function()
removeAttr
function()
removeClass
function()
removeData
function()
removeProp
function()
replaceAll
function()
replaceWith
function()
resize
function()
revmaxslide
function()
revnext
function()
revolution
function()
revpause
function()
revprev
function()
revresume
function()
revshowslide
function()
scroll
function()
scrollLeft
function()
scrollTop
function()
scrollspy
function()
select
function()
serialize
function()
serializeArray
function()
show
function()
siblings
function()
size
function()
slice
function()
slideDown
function()
slideToggle
function()
slideUp
function()
sort
sort()
splice
splice()
stop
function()
submit
function()
swipe
function()
tab
function()
text
function()
toArray
function()
toggle
function()
toggleClass
function()
tooltip
function()
transit
function()
transition
function()
trigger
function()
triggerHandler
function()
typeahead
function()
unbind
function()
undelegate
function()
unload
function()
unwrap
function()
val
function()
waitForImages
function()
width
function()
wrap
function()
wrapAll
function()
wrapInner
function()
__proto__
Object[]
1 ответ
Задача решена!
@link: https://github.com/trentrichardson/jQuery-Impromptu/issues/6
котировка
С новой системой событий обратный вызов привязан к приглашению. Поэтому обратный вызов должен быть вызван до уничтожения приглашения. Экспромт не предназначен для нескольких подсказок одновременно.
Если вы хотите обойти эту проблему, простым решением было бы setTimeout(10, function(){ $.prompt(...); }); Внутри обратного вызова. Это даст возможность закрыть предыдущее приглашение.
Исправлен Javascript
var txt = '<input type="text" name="email_address" value="" />';
function mycallbackform(e,v,m,f)
{
if(v != undefined)
{
if (v == true)
{
if (f.email_address.length == 0)
{
setTimeout(function(){ $.prompt('Please supply an email address for the customer'); }, 10);
}
else
{
$.post('". $this->view->url(array(), 'admin-create-user-from-checkout') ."', f, function(data) {
if(data.status)
{
$.prompt('Customer Record Created Successfully');
}
else
{
$.prompt('Customer Record could not be created');
$('#email_address').val($('#old_email_address').val());
}
}, 'json');
}
}
else
{
$('#email_address').val($('#old_email_address').val());
}
}
$.prompt(txt,{callback: mycallbackform, buttons: { Ok: true, Cancel: false }});