2013-11-01 3 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

Если единственная цель этого плагина состоит в том, чтобы эмулировать собственное window.prompt в DHTML, и он даже не говорит вам о том, как захватить пользовательский ввод, возможно, стоит отбросить плагин. – 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(); 
}; 

Затем мы создаем слушатель событий на теле для всех change событий, которые происходят в пределах Экспромта обертки (.jquibox)

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

С этим моментом, если когда-либо вход в импровизированных изменениях, его значение будет записано в объекте userInput. Итак, чтобы получить вход name в вашем примере:

userInput.name 
Смежные вопросы