jQuery Focus () или нажатие клавиш () не работают в IE и Chrome - PullRequest
1 голос
/ 10 ноября 2011

У меня есть код для табуляции через 2 поля, и он не действует в IE и Chrome, кажется, что он ничего не работает (например, я ничего не получаю, когда я ставлю оповещение), а в Firefox он работает с некоторой ошибкой (он скачеттам, где вы думаете, в чем проблема, я занимаюсь разработкой ASP.Net и jQuery версии 1.3.2

$(document).ready(function () {
    $("#TextBox1").keypress(function (e) {
        var kCode = e.keyCode || e.charCode; 
        if (kCode == 9) {
            $("#TextBox2").focus();
        }
    });
});

Ответы [ 3 ]

4 голосов
/ 10 ноября 2011

Я думаю, что основная проблема в том, что вы используете событие keypress, которое должно запускаться только при добавлении символа к входу, а не при нажатии какой-либо клавиши (например, TAB).

Для обработки других нажатий клавиш вам нужно будет использовать keydown.Тем не менее, проверка, что в вашей скрипке, кажется, все еще не работает.Чтобы это работало (по крайней мере, в Chrome), мне пришлось запретить действие по умолчанию:

$(document).ready(function () {
    $("#TextBox1").keydown(function (e) {
        e.preventDefault();
        var kCode = e.keyCode || e.charCode; 
        console.log(kCode);
         if (kCode == 9) {
            $("#TextBox2").focus();
        }
    });
});

Вот обновление скрипки .Однако, если я правильно понял ваш вопрос, все, что вы пытаетесь сделать, это изменить фокусированный элемент при нажатии клавиши табуляции ... если это правильно, почему бы просто не использовать вместо этого атрибут tabindex?

3 голосов
/ 10 ноября 2011

Событие keypress не запускается для вкладки (код клавиши 9). Вам нужно будет использовать keyup или keydown.

2 голосов
/ 10 ноября 2011

Если это ASP.NET, вам нужно сослаться на элементы управления с помощью ClientID:

$(document).ready(function () { 
    $("#<%=TextBox1.ClientID%>").keypress(function (e) { 
        var kCode = e.keyCode || e.charCode;  
         if (kCode == 9) { 
            $("#<%=TextBox2.ClientID%>").focus(); 
        } 
    }); 
}); 
...