Jquery Impromptu回调问题 - $ .prompt失败

时间:2013-06-11 16:40:02

标签: javascript jquery jquery-ui impromptu

我遇到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回调函数中。

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

Javascript

prompt

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

1 个答案:

答案 0 :(得分: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 }});