在输入数据输入字段时提交延迟表单

时间:2010-01-05 15:11:59

标签: jquery forms input submit

我有一个简单的表单,我需要在输入文本时自动提交。

我可以使用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();
});

每次输入字符时都会提交。我更愿意这样做   - 提交前有一段延迟,因此您可以完成输入   - 该焦点保留在输入字段上,准备在提交后输入(如果重新加载)

任何延迟form.submit()的方法,以便用户可以在提交表单之前完成输入?

(更新代码以更“jQuery”的方式提交)

溴。安德斯

2 个答案:

答案 0 :(得分:14)

这应该有效。没有输入任何内容500ms时提交表格

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

答案 1 :(得分:5)

这是一个坏主意。你不想绕过人们对表单输入的期望。如果您不想要提交按钮,那么至少要等到提交,直到您捕获“输入”。

除了用户心灵阅读设备你怎么知道用户何时完成输入,除非你正在寻找他们输入“return”或“enter”?用户不会知道他们应该暂停片刻让表单在超时时间提交,或者他们需要快速在500MS超时之前输入他们的搜索。

请参阅:this question

如果你想在任何提交时立即开始返回结果,你可以做某种ajax自动完成。

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

这是一个在enter上提交的jQuery示例:

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