Запретить кнопке отправку формы при нажатии «Ввод» в определенном месте - PullRequest
1 голос
/ 06 января 2012

У меня есть таблица с функцией быстрого редактирования (обновляет только одно поле с помощью AJAX), и я хочу, чтобы 'enter' отправил изменение.Проблема в том, что у меня есть кнопка в форме на той же странице, и каждый раз, когда я нажимаю «ввод», запускается действие, связанное с этой кнопкой (то есть, отправка формы, которую я не хочу делать), и я не могу понятьна всю жизнь, как предотвратить это.

Я попробовал следующий код, предотвращая значение по умолчанию для события keyup (что, вероятно, неправильно) и для кнопки.Однако я понимаю, что вы предотвращаете событие по умолчанию, а не объект, поэтому я действительно не уверен, что делать -

/** Capture a key press (while a field within the quick edit row is selected) */
qeRow.keyup(function(e){
    e.preventDefault(); // Also tried '$('#change-permissions-button').preventDefault'
    if(e.keyCode === 27) { // Cancel on 'escape' (This is working fine)
        return inlineEditUserGroup.revert();
    } else if(e.keyCode === 13) { // Save the data on 'enter'
        return inlineEditUserGroup.save();
    }
});

Спасибо.

1 Ответ

3 голосов
/ 06 января 2012

Попробуйте прослушать событие нажатия клавиши или нажатия клавиши.

qeRow.keypress(function(e){
    e.preventDefault(); // Also tried '$('#change-permissions-button').preventDefault'
    if(e.keyCode === 27) { // Cancel on 'escape' (This is working fine)
        return inlineEditUserGroup.revert();
    } else if(e.keyCode === 13) { // Save the data on 'enter'
        return inlineEditUserGroup.save();
    }
});

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

...