Установить фокус на текстовое поле в jQuery

#jquery #ajax #textbox

#jquery #ajax #текстовое поле

Вопрос:

Я создал текстовое поле, и когда пользователь вводит команду. Эта команда передается в php-файл с помощью jquery-ajax и выполняется на сервере, после чего возвращаются результаты. Эти результаты выводятся в браузере путем создания тега div.

Проблема в том, что я добавляю тег div. При добавлении мое текстовое поле, похоже, выходит из фокуса, мне приходится прокручивать страницу вниз, чтобы иметь возможность видеть, что я печатаю.

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

 $(function() {
    $('#cmd').keydown(

    function(event) {
        if (event.keyCode == 13) {
            event.preventDefault(); /*you can call your function here*/
            var tmp = $(this).val();
            $('#cmd').val('');
            commands.push(tmp);

            MyFunction(tmp);
            /*still you can it here*/
        }
    });
});
  

Эта функция получает возвращаемое значение и создает тег div.

 function MyFunction(msg) {
    var cmdStr = msg;
    $.ajax({
        url: 'exec.php',
        dataType: 'text',
        data: {
            q: cmdStr
        },
        success: function(response) { 

    $('#output').append("<div class=type> www-data@ubuntu:~# "   cmdStr  "</div>"   "<div class=output>"   response   "</div>");
        }

    });

}
  

Ответ №1:

Попробуйте это:

 success: function(response){
    $("#output").append("<div class=type> www-data@ubuntu:~# "   cmdStr  "</div>"   "<div class=output>"   response   "</div>");
    $("#cmd").focus(); //Wil focus your textbox
}
  

Ответ №2:

Попробуйте это:

 $(function() {
    $('#cmd').keydown(

    function(event) {
        if (event.keyCode == 13) {
            event.preventDefault(); /*you can call your function here*/
            var tmp = $(this).val();
            $('#cmd').val('');
            commands.push(tmp);

            MyFunction(tmp);
            $(this).focus(); // Set the focus back on to the #cmd element
        }
    });
});