jquery onchange / onfocus在窗体上

时间:2011-06-11 11:19:30

标签: jquery form-submit onchange onfocus

我正在使用jQuery来获取表单上输入文本字段的onchange效果。

假设表单有一个id =“myForm”,输入文本字段的id =“myText”;

$('#myText').change(function(){
    $('#myForm').submit();
});

这样,当我更改字段然后在字段外单击时,我的表单就会被提交。

但是,当我在输入字段中插入数据时,我希望我的表单被提交,而不必在输入字段外部单击(丢失onfocus)。

有什么想法吗?那可能吗? 感谢名单

2 个答案:

答案 0 :(得分:2)

您遇到的问题是您需要检测用户何时完成在文本框中输入信息。在更改时,任何按键都会在文本框中产生新内容,这将触发他们输入的第一个字母。我认为你唯一的解决办法就是在每个键盘事件结束时注册2秒钟超时,如果他们输入另一个字母,则提交你取消的表格。

例如:

var timedSubmit;

$('#myText').keyup(function(e) {
    if (e.keyCode) == 13 { $("#myform").submit() }
    clearTimeout(timedSubmit);
    timedSubmit = setTimeout('$("#myform").submit()', 2000);
});

注意我已经查找了按下的回车键(键码13),以便在按下回车时简单地提交表单。

答案 1 :(得分:1)

我不认为这是可能的。您总是可以使用keyup / keydown事件,因此当输入具有一定长度时,它将提交它。但这也没有意义,因为如果你打错了,就无法解决它,因为它会立即提交。

因此,除焦点更改外,无法确定您是否已完成javascript。

有人可能会建议添加超时,但这只会缓解问题。因为没有人知道用户有多快,或者他/她在提交过程中被打断了。