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回调函数内。

我一直在努力寻找大量的回调表单function文档,尽管我觉得我理解evf变量,但m (Message)并不是我以前用过的东西。 当我将m登录到控制台日志时,它看起来像jQuery Impromptu对象,但是我不确定如何访问它的属性。 我尝试过m.prompt()$.m.prompt()但这些只是猜测我将如何访问prompt函数。

使用Javascript

 var txt = ''; 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[] 

问题解决了!

 @link: https://github.com/trentrichardson/jQuery-Impromptu/issues/6 

引用

使用新的事件系统,回调绑定到提示符。 因此必须在销毁提示之前调用回调。 即兴不一次用于多个提示。

如果你想解决这个问题,一个简单的解决方案就是setTimeout(10,function(){$ .prompt(…);}); 回调内部。 这将为之前提示关闭提供机会。

修正了Javascript

 var txt = ''; 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 }});