почему моя кнопка теряет фокус? - PullRequest
0 голосов
/ 14 октября 2010

Это то, что я хочу, чтобы происходило. Когда пользователь нажимает «ввод», должен срабатывать «SearchForItems ()». Происходит еще один элемент управления с «другой кнопкой» на странице, которому возвращается фокус в любое время, когда любой другой элемент вкладывается из или после onkeyup.

Мне приходится принудительно фокусироваться на «кнопке поиска» при загрузке страницы, но после этого при каждом нажатии клавиши ввода запускается «другая кнопка». «Другой кнопке» не назначен индекс вкладки, и является кнопкой по умолчанию для страниц .

Я не уверен, хорошо ли я объяснил это. В основном я хочу знать, почему фокус смещается и как заставить принудительно вызывать кнопку «Поиск» при каждом нажатии клавиши ввода.

это одна запись на моей странице, где я пытаюсь принудительно вызвать кнопку «Поиск»:

<td><input type="text" onkeydown="CheckForEnterKey(event)" id="AcceptedDate1" maxlength="7"  style="width:121px;" value="<%=DateTime.Now.AddMonths(-3).ToString("MM/yyyy")%>"/>&nbsp;</td>

это часть моего файла jquery, где я тоже

$('#AcceptedDate1').keypress(function(e) { if (e.keyCode == 13 || e.which == 13) $('#SearchAcceptedLotsButton').click(); });

Функция CheckForEnterKey

function CheckForEnterKey(e)
    {
        var keycode;
        if(e.which)
        {
            keycode = e.which;
        }
        else
        {
            keycode = e.keyCode;
        }

        if(keycode == 13)
        {
            $('#SearchAcceptedLotsButton').click();//tried SearchForItems() also
        }
    }

Edit:

Я только что добавил это на свою страницу, и это, кажется, работает, я добавил это к главному div, который объединяет все. Теперь мне нужно выяснить, где была нажата кнопка ввода, поэтому она отменяется при каждом нажатии в основной части моей страницы. Есть идеи, на моей странице много элементов?

function checkKey(e)
    {
        if(e.keyCode == 13 || e.which == 13)
        {
            e.returnValue = false;
            e.cancel = true;
        }
    }

Ответы [ 3 ]

0 голосов
/ 14 октября 2010

В приведенном выше коде, когда нажата клавиша ввода, id="SearchAcceptedLotsButton" может быть вызвано следующим образом:

    if(keycode == 13)
    {
        $('#SearchAcceptedLotsButton').trigger('click');
    }
0 голосов
/ 14 октября 2010

Вот как я решил проблему:

Я добавил эту функцию ..

function checkKey(e)
    {
        if(e.keyCode == 13 || e.which == 13)
        {
            e.returnValue = false;
            e.cancel = true;
            SearchAcceptedLots();
        }
    }

В самом верхнем div, содержащем все на странице, я добавил это:

<div id="ItemPanel" onkeydown="checkKey(event)">

это ловит каждый ввод, который нажимается в форме, отменяет поведение кнопок по умолчанию и вызывает нужную функцию.

0 голосов
/ 14 октября 2010

Я не уверен, почему у вас проблемы. Но я могу предложить вам мой onKeyDown код для нажатия enter:

if (event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) { #DO JS HERE # }}

Так что я использую это так:

<input type="text" onKeyDown="if (event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) { alert('You pressed enter!'); }}">
...