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

Til*_*eck 10 forms jquery input submit

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

我可以使用onChange或onKeyUp而没有最好的结果.

HTML是:

  <form action="" id="fusionSearchForm" method="post">
    <input type="text" class="std_input" id="fusion_searchText" />
  </form>
Run Code Online (Sandbox Code Playgroud)

和jQuery

jQuery("#fusionSearchForm").keyup(function() {
  this.submit();
});
Run Code Online (Sandbox Code Playgroud)

每次输入一个字符时都会提交.我更愿意这样做 - 在提交之前有一个延迟,所以你可以完成你的输入 - 焦点保持在输入字段准备好提交后输入(如果重新加载)

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

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

BR.安德斯

jit*_*ter 16

这应该工作.在没有输入500ms的情况下提交表单

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


jjc*_*son 5

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

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

见:这个问题

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

自动完成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;
            }
    });
Run Code Online (Sandbox Code Playgroud)