如何在输入文本变化时触发函数并自动提交表单?能否添加keyup事件?
问题解答
首先,咱们先梳理下你现有代码里的几个小问题,修正后功能才能正常跑起来:
- 重复ID问题:你的输入框同时写了
id="client_area"和id="email",HTML里每个元素的ID必须唯一,得删掉其中一个(比如保留id="client_area"就好)。 - JS语法错误:你的
name函数多了两个多余的);,正确的函数写法应该是:function name(){ $("#submit2").click(); }
修正后的完整基础代码如下:
<form id="a"> <input type="text" id="client_area" name="client_area" maxlength="5" size="5" onchange="name();"> <input id="submit2" name="submit2" type="submit" class="btn btn-primary" value="Start"/> </form> <script> function name(){ $("#submit2").click(); } </script>
接下来回答你的核心问题:
- 关于自动触发提交:上面的代码已经能实现输入框内容改变(失去焦点时)触发
name函数,并自动点击提交按钮了。 - 是否可以添加keyup事件:当然可以!直接写成
onchange="name();" onkeyup="name();"完全可行,这样无论是输入框内容改变后失去焦点(onchange触发),还是用户每按下一个按键抬起(keyup触发),都会执行提交逻辑。
不过更推荐用jQuery的事件绑定来统一处理,这样不用在HTML标签里堆一堆内联事件,代码更整洁易维护:
$(document).ready(function(){ // 给输入框绑定change和keyup事件 $("#client_area").on("change keyup", function(){ $("#submit2").click(); }); });
对应的HTML就可以去掉内联事件了:
<form id="a"> <input type="text" id="client_area" name="client_area" maxlength="5" size="5"> <input id="submit2" name="submit2" type="submit" class="btn btn-primary" value="Start"/> </form>
最后小提醒:name是个比较特殊的函数名,虽然能工作,但建议换成更有语义的名字(比如autoSubmitForm),避免潜在的命名冲突~
内容的提问来源于stack exchange,提问作者macks
相关产品推荐
相关产品推荐

