Jquery получает идентификатор текстового поля, в котором был нажат ввод?

#jquery

#jquery

Вопрос:

У меня есть несколько текстовых полей с идентификаторами, такими как manual_input_1, manual_input_2, manual_input_3. Я хочу остановить отправку формы при нажатии enter в этих текстовых полях.

Приведенный ниже код делает это, но теперь я хотел бы знать полный идентификатор текстового поля, нажимая enter, чтобы я мог получить значение поля. например, manual_input_2 нажал enter, значение = 1234.

 $('[id^="manual_input_"]').keydown(function(e) {
    if(e.which == 13) {
        e.preventDefault();

        var id = ?; <--- id of textbox that pressed enter
        var value = ?; <--- value of textbox that pressed enter

        alert('Enter pressed for ' id 'n' 
            'Value = ' value;
        )

        return false;
    }
});
  

Можно ли это сделать? Примеры были бы действительно полезны.

Спасибо

Ответ №1:

Вы можете получить «идентификатор» с помощью

 var id = this.id;
  

и значение с

 var value = this.value;
  

Уровень отправки событий jQuery гарантирует, что this при вызове обработчика ссылаются на затронутый элемент.

Ответ №2:

 var id=$(this).attr('id');
var value=$(this).val();
  

Комментарии:

1. Это действительно работает, но далеко не так эффективно, как простой доступ к атрибутам «id» и «value» самого объекта DOM.

Ответ №3:

Просто используйте $(this) :

 $('[id^="manual_input_"]').keydown(function(e) {
    if(e.which == 13) {
        e.preventDefault();

        var id = $(this).attr('id');
        var value = $(this).val();

        alert('Enter pressed for ' id 'n' 
            'Value = ' value;
        )

        return false;
    }
});
  

Ответ №4:

 $('[id^="manual_input_"]').keydown(function(e) {
if(e.which == 13) {
    e.preventDefault();

    //var id = ?; <--- id of textbox that pressed enter
    //var value = ?; <--- value of textbox that pressed enter
    var id = $(this).attr("id");
    var value = $(this).val();

    alert('Enter pressed for ' id 'n' 
        'Value = ' value);

    return false;
}
});