Jquery IE9,关注输入文本框,但按enter键将执行第一个输入按钮。我需要它停止

Jquery IE9,关注输入文本框,但按enter键将执行第一个输入按钮。我需要它停止,jquery,internet-explorer-9,Jquery,Internet Explorer 9,我有一个网络应用,人们可以在那里搜索东西。在IE9中,焦点是搜索输入元素,但第一个按钮高亮显示,因此当有人按下enter键时,它将始终执行第一个按钮 我不希望人们能够按下回车键并执行第一个按钮 原因是有些人倾向于在搜索的输入文本框中键入后按enter键,即使它是基于keyup事件的 我尝试将其重新聚焦到搜索输入元素。我也试着模糊按钮。它似乎不起作用 有人知道这个问题的解决办法吗 谢谢你抽出时间 编辑: 我不想高举回车键,因为如果有人真的在第一个按钮上点击焦点,然后按回车键怎么办?也许我可以查一下

我有一个网络应用,人们可以在那里搜索东西。在IE9中,焦点是搜索输入元素,但第一个按钮高亮显示,因此当有人按下enter键时,它将始终执行第一个按钮

我不希望人们能够按下回车键并执行第一个按钮

原因是有些人倾向于在搜索的输入文本框中键入后按enter键,即使它是基于keyup事件的

我尝试将其重新聚焦到搜索输入元素。我也试着模糊按钮。它似乎不起作用

有人知道这个问题的解决办法吗

谢谢你抽出时间

编辑: 我不想高举回车键,因为如果有人真的在第一个按钮上点击焦点,然后按回车键怎么办?也许我可以查一下?或者有更好的解决办法

编辑2:在此处发现了类似问题: 但解决这个问题的办法是ASP

编辑3:

代码示例:

    <div >
        <label>ETTRN:<input type="text" id="search" maxlength="16" /></label>
        <input type="submit" value="Generate CSV" id="generate_csv" />
    </div>

埃特恩:

将搜索框单独放入

<form action="javascript:void(null);" method="post">
    <input type="text" id="searchbox" />
</form>


这将(或至少应该)防止IE(或任何浏览器)将第一个按钮视为Enter键的操作。

我想出了一个解决方案

jQuery('*:focus').live('keydown', function(event) {
    if (event.keyCode == 13) {
        switch(jQuery(this).attr('id')) {
            case 'search' :
            case 'date-start':
            case 'date-end':
                event.preventDefault();
                return false;
        }
    }
});
我只关心焦点何时在用于搜索的文本输入元素上(即搜索、日期开始和日期结束)。因此,如果按下某个键时这三个文本输入元素中的一个处于焦点,请检查是否为Enter键(13),如果为,则禁用默认值


谢谢大家的帮助。

问题与文档中描述的类似:

如果要解决此问题,可以使用
keypress
keydown
事件:

$('input.input wrapper').on('keydown',e=>{console.log(e.keyCode);});
或使用空表单包装输入元素:


测试

这种情况是只针对IE9还是针对所有浏览器?问题通常与表单上的默认操作有关。@ryanOptini代码非常庞大,我认为它不是代码。我将尝试提出一个简单的示例代码2morrow。我家里没有为ie9>\uu__@BlueFish准备的窗户机器,它不是一种形式。就9点。我想我已经读到html5声明表单中的第一个按钮总是高亮显示?但我的不在形式上。我把焦点放在输入文本框上,而在第一个按钮上有某种伪焦点。这似乎是合乎逻辑的。我明天试试。再次感谢。对于JQuery 1.8版,将“live”替换为“on”++