【问题标题】:submit form with delay while entering data into input field将数据输入输入字段时延迟提交表单
【发布时间】:2011-01-01 16:30:45
【问题描述】:

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

我可以使用 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”的提交方式)

兄弟。安德斯

【问题讨论】:

  • 您无法知道用户是否完成了输入。如果有人打字很慢怎么办?

标签: jquery forms input submit


【解决方案1】:

这应该可行。在 500 毫秒内没有输入任何内容时提交表单

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

【讨论】:

  • 谢谢!我尝试使用相同的代码,但没有运气。但是后来我在 var 表单之后添加了一个 var timerid = '' ,这就成功了。谢谢。
  • 不。不工作。我猜 clearTimeout 不起作用,因为即使我继续输入表单也会在 500msek 后提交
  • 嗯...毕竟你的答案中已经包含了一切。我错过了 onkeyup 外最顶部的 var timerid。谢谢。
  • 正如@jjclarckson 和@Darin 指出的那样,你永远不知道是否有人真的完成了打字。但是,这对于 AJAX 表单可能非常有用,您可以在用户键入时多次提交该表单。我尝试将此答案改编为 AJAX 表单,但遇到了 MicrosoftAjax.js 库的一些问题。有关经验教训以及如何将此答案应用于 AJAX 表单,请参阅 stackoverflow.com/questions/4717183/…
【解决方案2】:

这是个坏主意。您不想规避人们对表单输入的期望。如果您不想要提交按钮,那么至少要等到您捕获“输入”之后再提交。

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

见: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;
            }
    });

【讨论】:

  • 没错,但这是设计师的要求。但是,如果我可以设置一个延迟,例如500 毫秒,我想只有少数人会生气。
  • 我喜欢自动完成。给人真正的web2.0的感觉。我还希望这是更新的实际列表。我想使用 CSS 会很容易,但我有很多记录,所以需要某种服务器调用。还没研究呢
  • 感谢您提供有关更好可用性的提示,为我们所有人构建更好的互联网。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 2011-12-12
相关资源
最近更新 更多