2013-11-01 30 views
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是一個非阻塞函數。所以程序繼續而不用等待用戶輸入。

+0

有什麼建議嗎? –

+0

如果這個插件的唯一目的是模擬DHTML中的本地window.prompt,它甚至不告訴你如何捕獲用戶輸入,這可能是值得放棄插件。 – Barney

回答

0

嘗試這樣的事情

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

thx爲您的答案。問題是'$ .prompt'是一個非阻塞函數。所以程序繼續而不用等待用戶輸入。 (我檢查與斷點檢查元素)。 –

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

然後,我們建立對身體的事件偵聽器的即興包裝(.jquibox

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

內發生,從這個點的所有change事件以後如果有的話即興變化中的輸入,其值將被記錄在userInput對象中。因此,要在您的示例中獲得name輸入:

userInput.name