如何从提示中获取用户输入

时间:2013-11-01 15:21:16

标签: javascript jquery impromptu

我有这个代码(在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是一个非阻塞函数。所以程序继续而不等待用户输入。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情

            $('#my_a').click(function() {
                f = $.prompt(statesdemo);
                if(f.name!==undefined){
                      console.log(f.name);
                }
                if(f.travel!==undefined){
                      console.log(f.travel);
                }
            });

答案 1 :(得分:0)

I've created a demo with an extra button that logs user input

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

var userInput = {};

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

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

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

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

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

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

userInput.name