问题描述
|
我正在使用jQuery在表单上获得输入文本字段的onchange效果。
假定表单具有id = \“ myForm \”,并且输入文本字段具有id = \“ myText \”;
$(\'#myText\').change(function(){
$(\'#myForm\').submit();
});
这样,当我更改字段然后在字段外单击时,将提交我的表单。
但是,我希望在完成将数据插入输入字段后无需在输入字段之外单击(失去onfocus)后提交表单。
有任何想法吗?那可能吗?
谢谢
解决方法
您面临的问题是您需要检测用户何时在文本框中输入完信息。当任何按键操作在文本框中产生新内容时,就会发生变化,这将由他们输入的第一个字母触发。我认为您唯一的解决方案是在每次键入事件结束时注册2秒钟的超时时间,以提交表格,如果他们键入另一个字母,则将其取消。
因此,例如:
var timedSubmit;
$(\'#myText\').keyup(function(e) {
if (e.keyCode) == 13 { $(\"#myform\").submit() }
clearTimeout(timedSubmit);
timedSubmit = setTimeout(\'$(\"#myform\").submit()\',2000);
});
注意我也一直在寻找被按下的回车键(键码13),以便在按下回车键时它只提交表单。
, 我认为这是不可能的。您可以始终使用keyup / keydown事件,因此,当输入的长度一定时,它将提交它。但这也没有意义,因为如果您输入错误,就无法修复,因为它会立即提交。
因此,除了焦点更改外,没有其他任何信息可以告诉您是否已完成javascript。
可能建议添加超时,但这只会缓解问题。因为无法确定用户的速度,或者在提交过程中用户被打断。