Как запустить ту же функцию, когда пользователь нажимает ввод или делает щелчок - PullRequest
1 голос
/ 21 июля 2009

У меня есть собственная функция редактирования на месте для jquery, которая выглядит следующим образом

    $('.editRow').live('click', function() {
    var row = $(this).parent('td').parent('tr');
    row.find('.1u').slideUp('fast');
    row.find('.1p').slideUp('fast');
    row.find('.inputTxt').slideDown('fast');
    $(this).parent('td').empty().append('<a href=# class=cancel>Cancel</a> / <a href=# class=save>Save</a>');
});

$('.cancel').live('click', function () {
    var row = $(this).parent('td').parent('tr');
    row.find('.1u').slideDown('fast');
    row.find('.1p').slideDown('fast');
    row.find('.inputTxt').slideUp('fast');
    $(this).parent('td').empty().append('<a href=# class=editRow>Edit</a>');
});

$('.save').live('click', function () {
    var thisParam = $(this);
    var row = $(this).parent('td').parent('tr');
    var id = row.attr('id');
    var userid = row.find('#1ui').val();
    var pass = row.find('#1pi').val();

    $.ajax({
    type: 'post',
    url: 'filefetch_update.php',
    data: 'action=updateUser&pass=' + pass + '&id=' + id + '&userid=' + userid,

    success: function(response) {
        $('#response').fadeOut('500').empty().fadeIn('500').append(response);
        var row = thisParam.parent('td').parent('tr');
        row.find('.1u').text(userid).slideDown('fast');
        row.find('.1p').text(pass).slideDown('fast');
        row.find('.inputTxt').slideUp('fast');
        thisParam.parent('td').empty().append('<a href=# class=editRow>Edit</a>');
    }
    });
});     

Теперь я хочу запустить функцию save , когда пользователь нажимает кнопку Сохранить, а также при нажатии клавиши ввода на клавиатуре.

Ответы [ 4 ]

1 голос
/ 21 июля 2009

Это должно работать для вас:

$(document).keypress(function(e) {
    if (e.which == 13) {
        $('.save').click();
    }
)};
0 голосов
/ 08 мая 2012
$(document).keypress(function(e) {
    if (e.which == 13) {
        $('#go').click();
    }
});

Это не работает должным образом, потому что после нажатия на элемент 'go' он возвращается к той же функции и скрывает результаты, поэтому я изменил этот код, когда он возвращается назад, затем возвращает false, поэтому вывод не будет скрыт.

Модифицированный код:

$(document).keypress(function(e) {
    if (e.which == 13) {
        $('#go').focus();
        $('#go').click();
        return false;
    }
});
0 голосов
/ 21 июля 2009

По сути, все, что вам нужно сделать, это то же самое, что вы уже делаете, но связать событие «нажатие клавиши» с текстовым полем и проверить e.which в функции обработчика. Если это ключ 13 (я думаю), тогда продолжайте и сделайте тот же код, что и для «клика».

$('.your-text-field').live('keypress', func)

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

Посмотрите здесь, должно помочь: Событие нажатия jQuery

0 голосов
/ 21 июля 2009

Не уверен, но это может сработать

<input type="text" onkeypress="return runScript(event)" />
 function runScript(e) {
    if (e.keyCode == 13) {
        // do some thing like
            $('.save').click();
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...