Так что я работал над этим весь день, и я не могу понять, как заставить его работать. У меня есть таблица с TD, заполненными содержимым, которое извлекается из базы данных с помощью команды JQuery «getJSON». У меня есть настроенный обработчик событий, чтобы при двойном щелчке элемента TD его содержимое становилось элементом INPUT со значением по умолчанию предыдущего содержимого вложенного TD.
Элемент INPUT создается внутри объекта Javascript с именем «Input», например:
var Input = function() {
var obj = this;
obj.docElement = $('<input/>').attr('type', 'text').val(obj.defaultValue);
}
Пока все это работает. Моя проблема в том, что я хочу, чтобы пользователь мог нажимать клавишу RETURN, когда выбран INPUT, чтобы показать, что он закончил редактирование этого поля. Я пробовал что-то вроде следующего:
$(obj.docElement).bind('keydown', function(e) {
if(e.which == 13) {
// do something
}
}
Это нормально работает при первом редактировании поля; однако, если вы редактируете поле несколько раз, оно перестает работать. Кроме того, если вы случайно дважды щелкнете по TD, в конце концов, он сломается. Я проверил его и определил, что элемент INPUT прекращает регистрировать любое событие типа, как если бы «связывание» больше не существовало для него.
Я много гуглил и определил, что обычный обработчик «связывания» JQuery, помещенный в элемент INPUT, ненадежен. Поэтому я решил присоединить обработчик событий к объекту документа, используя следующее:
$(document).bind('keydown', function(e) {
// do something
}
Я знаю, что могу использовать «e.target» для получения целевого элемента, над которым выполняется действие (и это работает для меня, e.target правильно ссылается на элемент INPUT).
Мой вопрос: как мне получить объект, который создал элемент INPUT? Мне нужно иметь возможность выполнять функции, содержащиеся в соответствующем «Вход»
класс, который использовался для создания элемента INPUT. Мне нужно вызывать эти функции из функции $ (document) .bind. Поэтому в основном мне нужно иметь возможность получить входной объект родителя / создателя элемента INPUT.
Если я недостаточно четко объяснил, просто дайте мне знать. Любая помощь в этом вопросе будет принята с благодарностью! Я также открыт для предложений по альтернативным методам (кроме использования "$ (document) .bind").
Спасибо!