Необходимо заставить скрипт jQuery работать в большинстве браузеров (кроссбраузерно)

Мне удалось заставить приведенный ниже скрипт работать в Firefox 12.0. IE и Chrome работают некорректно. Предполагая, что идентификаторами текстовой области являются #ICCID и #MSISDN, jQuery выглядит следующим образом:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $(document).ready(function() {
            $("#ICCID").focus();
            });

            var $inp = $('.cls');

            $inp.bind('keydown', function(e) {
                var key = e.which;
                if (key == 9) {

                    e.preventDefault();
                    var nxtIdx = $inp.index(this) + 1;                  
                    $(".cls:eq(" + nxtIdx + ")").focus();

                //Simulate Enter after TAB
                var textInput = $("#MSISDN").val();
                var lines = textInput .split(/\r|\r\n|\n/);
                if (lines > 1) {

                    $("#MSISDN").on("keypress", function(e) {
                    if (e.keyCode == 9) {
                    var input = $(this);
                    var inputVal = input.val();
                    setTimeout(function() {
                    input.val(inputVal.substring(0,inputVal.length) + "\n");
                          }, 1);
                       }
                    });
                }



                }
                if (key == 9) {

                    e.preventDefault();
                    var nxtIdx = $inp.index(this) - 1;
                    $(".cls:eq(" + nxtIdx + ")").focus();

                //Simulate Enter after TAB
                $("#ICCID").on("keypress", function(e) {
                if (e.keyCode == 9) {
                var input = $(this);
                var inputVal = input.val();
                setTimeout(function() {
                input.val(inputVal.substring(0,inputVal.length) + "\n");
                      }, 1);
                   }
                });


                }
            });
        });
</script>

Идея скрипта состоит в том, чтобы переключаться между двумя конкретными текстовыми областями нажатием кнопки TAB на клавиатуре с первоначальным фокусом на первой при загрузке веб-страницы, а также имитировать нажатие кнопки Enter после завершения действия TAB. Все другие элементы на странице должны игнорироваться для этого события нажатия клавиши TAB.

Может кто-нибудь помочь с этим?


person Deniss Baronov    schedule 18.05.2012    source источник


Ответы (1)


Когда вы впервые привязываете действие keydown, я бы попробовал:

$inp.bind("keydown", function(e)
{
    var code = (e.keyCode ? e.keyCode : e.which);
    if(code == 9)
    {
        //DO SOMETHING
    }
});

Я бы тоже поменял все ваши keypress на keydown

Или попробуйте прочитать http://api.jquery.com/keypress/.

person Matt Pond    schedule 18.05.2012