0

我有这段代码(在 jQuery Impormptu 中):

var statesdemo = {
    state0: {
        title: 'Name',
        html:'<label>name <input type="text" name="name" value=""></label><br />',
        buttons: { Next: 1 },
        submit:function(e,v,m,f){ 
            console.log(f);

            e.preventDefault();
            $.prompt.goToState('state1');
        }
    },  
    state1: {
        title: 'choice',
        html:'<label>choice: <select name="travel" multiple>'+
        '<option value="1" selected>1</option>'+
        '<option value="2">2</option>'+
        '</select></label>',
        buttons: { Back: -1, Done: 1 },
        focus: 1,
        submit:function(e,v,m,f){ 
            console.log(f);

            e.preventDefault();
            if(v==1) {$.prompt.close();}
            if(v==-1) $.prompt.goToState('state0');
        }
    }
};

并使用简单的 jquery 我有这个片段:

$('#id').bind("dblclick", function() {
  console.log('target id: ' + event.target.id);
  f = $.prompt(statesdemo);
});

提示完成后如何获取用户输入?$.prompt 不返回任何内容。此外,问题在于 $.prompt 是一个非阻塞函数。因此程序继续运行而无需等待用户输入。

4

2 回答 2

0

我创建了一个带有记录用户输入的额外按钮的演示

您可以通过创建一个对象来在 Impromptu 对象中包含用户输入来实现这一点。

var userInput = {};

接下来,创建一个接受表单输入更改事件的函数,并将输入的当前值分配给我们刚刚创建的与输入同名的对象中的一个属性。

function registerUserInput( changeEvent ){
    var input = changeEvent.target;

    userInput[ input.name ] = $( input ).val();
};

然后我们在主体上为即兴包装器 ( )change中发生的所有事件创建一个事件侦听器.jquibox

$( 'body' ).on( 'change', '.jqibox *', registerUserInput );

从此时起,如果 Impromptu 中的输入发生变化,其值将记录在userInput对象中。因此,要name在您的示例中获取输入:

userInput.name
于 2013-11-04T12:02:47.313 回答
0

尝试这样的事情

            $('#my_a').click(function() {
                f = $.prompt(statesdemo);
                if(f.name!==undefined){
                      console.log(f.name);
                }
                if(f.travel!==undefined){
                      console.log(f.travel);
                }
            });
于 2013-11-02T12:29:00.157 回答