jquery setfocus () недавно вставленные элементы - PullRequest
2 голосов
/ 18 декабря 2010

привет, у меня есть таблица в форме. при загрузке страницы я установил фокус на первый вход [type = 'text']. и я публикую форму с помощью ajax, и если все пойдет правильно, я добавлю новую строку в начало таблицы. и теперь я не могу установить фокус на новую вставленную строку. Вот мой код JavaScript:

  $(document).keypress(function (e) {
            var key_code = e.which;
            if (key_code == 13) {
                $.ajax({
                    type: "POST",
                    url: "AddNewPayPackage",
                    data: $("#AddPackPayment").serialize(),
                    dataType: "text/plain",
                    success: function (response) {
                        if (response == "Saved") {
                            $('#myTable tbody tr:first input:text').removeAttr("tabindex");

                            $.get('AddNewPayPackage', function (data) {
                                $('#myTable tbody tr:first').before("<tr>" + data + "</tr>");
                            });

                            $('.input-validation-error').removeClass('input-validation-error');
                            $("form :input[type='text']:first").focus();
                        }
                        else {
                            $("#myTable tbody tr:first").html(response);
                        }
                    }
                });
            }
        });    

Ответы [ 2 ]

6 голосов
/ 18 декабря 2010

Проблема в том, что ваш элемент добавлен в обратный вызов $.get() и добавлен позже , когда ответ сервера возвращается с содержимым ... поэтому вам нужно сосредоточиться после , что происходит ... в обратном вызове, вот так:

$.get('AddNewPayPackage', function (data) {
    $('#myTable tbody tr:first').before("<tr>" + data + "</tr>");
    $("form :input[type='text']:first").focus(); //needs to run here
});
$('.input-validation-error').removeClass('input-validation-error');
1 голос
/ 18 декабря 2010

Похоже на опечатку:

$("form :input[type='text']:first").focus();

должно быть

$("form input[type='text']:first").focus();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...