【前端】jQuery中input绑定回车事件不生效,直接刷新页面的问题

表单代码

前端代码

    <form id="searchForm" style="margin: 4px 0px 0px 15px" class="form-horizontal">
        <div class="form-group form-group-xs">
            <label class="col-xs-2 l-btn-text">&nbsp;扫码区</label>
            <div class="col-xs-4 normalSearch" style="display: inline-block;">
                <input id="code" name="code" class="form-control" placeholder="扫码或录入量具编号,员工编号,回车键添加量具">
            </div>
        </div>
    </form>

绑定的回车事件

      //进入页面后,自动获取焦点
        document.querySelector('#code').focus();
	 //绑定回车事件。
        document.onkeydown = function (e) {
            var ev = document.all ? window.event : e;
            if (ev.keyCode == 13) {
                queryByCode();
            }
        }

回车事件还可以绑定某页面元素

$("#code").focus(function () {
        document.onkeydown = function (e) {
            var ev = document.all ? window.event : e;
            if (ev.keyCode == 13) {
                queryByCode();
            }
        }
    });

因为页面上只有一个输入框,所以效果是一样的。

现象

每次输入完成后,按下回车键,页面就会自动刷新一下,并不会进入我们绑定的函数。但是其他调用同样代码的页面,并没有出现这个问题

经查阅资料,发现是form表单中,如果只有一个input,回车键将触发自动提交,而表单内的input框的回车事件,实际上是调用了,但被页面刷新给重置了。

解决方案

  1. 如果不是特别需要表单元素,直接将表单改为div即可解决
  2. 如果必须要保留表单,那么有3种方法
    (1) 在表单中,增加一个隐藏的input,使表单内的input元素大于1个
    (2)给表单增加οnsubmit=“return false;”
    (3)给input的绑定事件中,增加return false,阻止其继续调用

    $("#code").focus(function () {
        document.onkeydown = function (e) {
            var ev = document.all ? window.event : e;
            if (ev.keyCode == 13) {
                queryByCode();
                return false;
            }
        }
    });
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值