IE9,专注于输入文本框,但按enter会执行第一个输入按钮.我需要它停止



我有一个web应用程序,人们可以在那里搜索东西。在IE9中,重点是搜索输入元素,但第一个按钮是高亮的,所以当有人按下回车键时,它总是执行第一个按钮。

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

原因是有些人倾向于在搜索的输入文本框中输入后按回车键,尽管它是基于keyup事件的。

我已经尝试将其重新聚焦到搜索输入元素。我还试过模糊按钮。它似乎不工作。

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

感谢您的宝贵时间。

编辑:我不想劫持回车键因为如果有人真的把焦点放在第一个按钮上然后按回车呢?也许我可以查一下?或者有更好的解决办法?

Edit 2: 在这里发现了一个类似的问题:阻止IE突出显示表单中的第一个提交按钮但是解决这个问题的方法是ASP。

编辑3:

代码示例:

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

将搜索框单独放置在<form>

<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),如果是,则禁用默认值。

谢谢大家的帮助。

问题与文档描述的类似:https://github.com/aleen42/PersonalWiki/issues/32#issuecomment-489966824

如果您想解决这个问题,您可以使用keypresskeydown事件来代替:

$('input.input-wrapper').on('keydown', e => { console.log(e.keyCode); });

或者用空表单包装输入元素:

<form action="javascript: void(0);">
    <input type="text" class="input-wrapper" value="" />
</form>
<button>test</button>

最新更新