【问题标题】:how to get the user input from prompt如何从提示中获取用户输入
【发布时间】:2013-11-01 15:21:15
【问题描述】:

我有这段代码(在 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 我有这个 sn-p:

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

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

【问题讨论】:

  • 如果这个插件的唯一目的是在 DHTML 中模拟原生 window.prompt,而且它甚至没有告诉你如何捕获用户输入,那么放弃这个插件可能是值得的。

标签: javascript jquery impromptu


【解决方案1】:

试试这样的

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

【讨论】:

  • 感谢您的回答。问题是$.prompt 是一个非阻塞函数。因此程序继续运行而无需等待用户输入。 (我用断点检查元素)。
【解决方案2】:

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();
};

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

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

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

userInput.name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2014-05-29
    • 2011-12-13
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多