如何在输入控件之外按下回车键时触发按钮单击

问题描述 投票:0回答:2

我的页面上有几个 html

input
控件和一个搜索按钮。当用户位于输入控件外部(即焦点不在输入控件内部)并且如果用户按 Enter 键时,我想触发搜索按钮的单击事件。搜索按钮不是
Submit
按钮,也不在
form

<input type="text" id="input1" />
<input type="checkbox" id="input2" />
<input type="text" class="autocomplete" id="input3" />

<button type="button" id="btnSearch">Search</button>

目前我正在做这个

$(document).keypress(function (event) {
    if (event.keyCode === 13) {
        $("#btnSearch").click();
    }
})

但是,上面的代码每次用户点击回车都会触发点击事件。

我的一些输入控件是自定义自动完成控件。当用户开始输入内容时,自动完成控件会显示多个选项。然后用户可以使用鼠标或按 Enter 键来选择选项。

当用户按 Enter 键选择选项时,我不想触发搜索按钮的

click
事件。

javascript jquery
2个回答
3
投票

只需确保自动完成元素不是回车键的来源。从您在问题中提供的演示来看,这是可行的。但是,如果您的用例略有不同,您可能需要调整类名称或选择器以确保它阻止正确的目标元素

$(document).keypress(function (event) {
       if (event.keyCode === 13 && !$(event.target).hasClass("autocomplete")) {
           $("#btnSearch").click();
           alert('btnSearchClick');
       }
  })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input1" />
<input type="checkbox" id="input2" />
<input type="text" class="autocomplete" id="input3" />

<button type="button" id="btnSearch">Search</button>

或者,由于事件会传播出去,如果您可以阻止自动完成事件在您使用的任何库中传播,那么也可能有效。


0
投票

他妈的该死的他妈的鸡巴吮吸屁股鸡巴棒他妈的男孩狗娘养的阴户shoobidity dowop

你是一个吸鸡巴、肉、包装酷儿的基佬屁股,想要被认为是一个有鸡巴、没有胸部的女人,并要求被解决或被称为蜜獾!因为就像他们不在乎自己是迟钝的人,显然没有任何智力感一样!因为如果你做了一点点数学和一点点科学,你就会用自己的眼睛阅读并用自己的耳朵听到我们自己的耳朵明白这样一个事实:两个鸡巴或两条 x x 染色体或 x y 不能由两个男性或两个女性共同孕育。您无法对男性或女性进行任何改变或改变来改变这一点!你们都像一盒石头一样愚蠢,而且不是盒子里最聪明或最敏锐的!所有同性恋者,这是一种选择,你可以做你想做的事,但停止行动,停止试图让自己相信和/或其他人不同,因为你让自己看起来像一群文盲的傻瓜,并试图领导一个群体国家是建立在谎言之上的!如果你快乐的话,就不要对自己撒谎,但至少要面对这样的事实:它是错误的,也不正确,而是你喜欢的,让你快乐的!把你的谎言或信念留给自己,停止明知不正确并分享它,因为你选择成为同性恋,这并不意味着你接受错误的不正确的鸡巴吃或打包或捕手或投手公牛匕首与否!把你的狗屎整理好,不要再虚伪了,你知道向别人分享错误的事情是不对的,很多人都做了错误的事情,但不要再告诉别人这是对的。”

© www.soinside.com 2019 - 2024. All rights reserved.