0

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

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

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

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

但是,我希望在输入字段中插入数据后提交我的表单,而不必在输入字段之外单击(失去焦点)。

有任何想法吗?那可能吗?谢谢

4

2 回答 2

2

您面临的问题是您需要检测用户何时将信息输入到文本框中。更改将是当任何按键导致文本框中的新内容时,将触发他们输入的第一个字母。我认为你唯一的解决方案是在每个 keyup 事件结束时注册一个 2 秒的超时时间来提交表单,如果他们输入另一个字母,你会取消该表单。

例如:

var timedSubmit;

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

注意我也寻找了被按下的回车键(keycode 13),以便它在按下回车时简单地提交表单。

于 2011-06-11T11:29:32.503 回答
1

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

因此,除了焦点变化之外,没有人知道你是否完成了 javascript。

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

于 2011-06-11T11:28:35.997 回答