2010-01-05 6 views
8

У меня есть простая форма, которую я должен отправить автоматически при вводе текста.отправить форму с задержкой при вводе данных в поле ввода

Я могу использовать onChange или onKeyUp без наилучшего результата.

HTML является:

<form action="" id="fusionSearchForm" method="post"> 
    <input type="text" class="std_input" id="fusion_searchText" /> 
    </form> 

И JQuery

jQuery("#fusionSearchForm").keyup(function() { 
    this.submit(); 
}); 

Это представляет каждый раз, когда персонаж вводится. Я предпочел бы это так - была задержка, прежде чем отправить, так что вы можете закончить ввод текста - что фокус остается на поле ввода готов ввести после представить (если перезарядка)

Любой способ задержать форму. submit(), чтобы пользователь мог завершить печать до отправки формы?

(UPDATE закодировать к более "JQuery" рода способом представить)

Br. Anders

+1

Вы не можете знать, закончил ли пользователь печатать. Что делать, если кто-то очень медленно? –

ответ

14

Это должно работать. Отправляет форму, когда ничего не было напечатано за 500 мс.

var timerid; 
jQuery("#fusionSearchForm").keyup(function() { 
    var form = this; 
    clearTimeout(timerid); 
    timerid = setTimeout(function() { form.submit(); }, 500); 
}); 
+0

Спасибо! Я пробовал с тем же кодом, но не повезло. Но затем я добавил var timerid = '' после формы var, и это сделало трюк. Благодарю. – Tillebeck

+0

Нет. Не работал. clearTimeout не работает, я думаю, так как форма будет подаваться на 500msek, даже если я продолжаю печатать – Tillebeck

+0

Ну ... у вас все было в вашем ответе в конце концов. Я пропустил таймер var в самой верхней части onkeyup. Благодарю. – Tillebeck

5

Плохая идея. Вы не хотите обходить средства контроля, которые люди ожидают от ввода формы. Если вы не хотите кнопку отправки, то, по крайней мере, подождите, пока вы не зафиксируете «ввод».

Другое, чем устройство чтения сознания пользователя Как вы могли узнать, когда пользователь закончил ввод,, если только вы не искали, чтобы они набирали «return» или «enter»? Пользователи не будут знать, что они должны сделать паузу в один момент, чтобы оставить форму в таймаут, или что им нужно торопиться, чтобы их поиск был введен до таймаута 500MS.

См: this question

Из если вы хотите, чтобы начать возвращать результаты сразу после любого представления вы могли бы сделать какой-то Ajax автозаполнения.

autocomplete http://img9.imageshack.us/img9/5526/autocompletegoogle.png

Вот пример JQuery представления на входят:

$("input").keypress(function(e) { 
      switch (e.keyCode) { 
        case 13: 
          $("#formid").submit(); 
          return false; 
        default: 
          return true; 
      } 
    }); 
+0

Правда, но это требование от дизайнера. Но если я могу просто установить задержку, например. 500 мсек, тогда я хочу, только немногие будут сумасшедшими. – Tillebeck

+0

Мне нравится автозаполнение. Это дает реальное ощущение web2.0. Мне также хотелось бы, чтобы это был обновленный фактический список. Я думаю, это будет легко с помощью CSS, но у меня много записей, поэтому потребуется какой-то серверный вызов. Не заглядывали в это еще – Tillebeck

+1

Спасибо за советы по улучшению удобства использования, создание лучшего интернета для всех нас. :) – Lilleman

Смежные вопросы