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