我有一个简单的表单,我需要在输入文本时自动提交。
我可以使用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”的方式提交)
溴。安德斯
答案 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;
}
});