IE9, сфокусируйтесь на вводимом текстовом поле, но нажатие Enter выполнит первую кнопку ввода.Мне нужно это остановить - PullRequest
2 голосов
/ 28 сентября 2011

У меня есть веб-приложение, где люди могут искать вещи. В IE9 основное внимание уделяется элементу ввода поиска, но первая кнопка подсвечивается, поэтому, когда кто-то нажимает клавишу ввода, она всегда выполняет первую кнопку.

Я не хочу, чтобы люди могли нажимать клавишу ввода и выполнять первую кнопку.

Причина в том, что некоторые люди, как правило, нажимают клавишу ввода после ввода в текстовое поле ввода поиска, даже если оно основано на событии keyup.

Я попытался перефокусировать его на элемент ввода поиска. Я также попытался размыть кнопку. Это не похоже на работу.

Кто-нибудь знает решение этой проблемы?

Спасибо, что уделили время.

редактирование: Я не хочу перехватывать кнопку ввода, потому что, если кто-то на самом деле переключит фокус на первую кнопку и нажмет ввод? Может быть, я могу проверить это? Или, может быть, есть лучшее решение?

Редактировать 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>

Ответы [ 3 ]

4 голосов
/ 28 сентября 2011

Поместите поле поиска в <form> все по отдельности.

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

Это (или, по крайней мере, должно) не позволит IE (или любому браузеру) рассматривать первую кнопку как действие.для клавиши ввода.

0 голосов
/ 07 мая 2019

Проблема аналогична описанной здесь в документе: https://github.com/aleen42/PersonalWiki/issues/32#issuecomment-489966824

Если вы хотите решить проблему, вы можете использовать событие keypress или keydown вместо:

$('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>
0 голосов
/ 29 сентября 2011

Я выясняю решение.

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), а затем отключите значение по умолчанию.

Спасибо всем за помощь.

...