У меня есть серия вложенных таблиц с табличными данными. Таблицы имеют 3 глубины, поэтому есть главная таблица, которая содержит структуру всего объекта, некоторые промежуточные таблицы, которые содержат разделы главной таблицы, и таблицы данных, содержащие фактические данные.Выбор отдельного элемента в большой таблице при нажатии клавиши jQuery
Идея состоит в том, что когда элемент регистрирует событие ключа, выполняется расчет в строке данных, которая зарегистрировала событие ключа.
Структура таблиц данных примерно следующим образом:
<table id="someDataTable">
<tbody>
<tr>
<td >Some Title</td>
<td >Units</td>
<td >Val/Unit</td>
<td >Value</td>
</tr>
<tr>
<td><input type="text" size="30" /></td>
<td><input type="text" size="14" class="units"/></td>
<td><input type="text" size="14" class="value"/></td>
<td><input type="text" size="14" readonly="readonly" class=total"/></td>
</tr>
...
</tbody>
</table>
идентификатор таблицы уникален, конечно.
Грубая идея: 'units * value = total' в любом количестве строк (они динамически генерируются по требованию, но я не думаю, что это имеет значение).
Моя идея, чтобы сделать это было возможно, чтобы захватить все нажатиями в главной таблице с этим:
function initialize() {
$(document).on('keypress', '#tblMasterTable', DoMathForRow);
}
который затем вызывает на универсальной функции, которые могли бы сделать математику для всех таблиц данных. Идея состояла в том, чтобы использовать «это» в качестве средства идентификации ...
function DoMathForRow() {
tKeyedBox = this;
//Do Things Here
}
В принципе, я надеялся, что «это» вернет окно ввода, который был набран в, так что я мог бы эффективно сказать
tKeyedBox.parent().parent()
И иметь доступ к точной строке, было событие нажатия клавиши. Оттуда было бы легко сделать все остальное.
Но «это» возвращает всю основную таблицу, что весьма неудачно.
Мой вопрос заключается в следующем: как получить окно ввода (или ячейку или строку - что-то абсолютно идентифицирующее), где произошло событие нажатия клавиши.
Я довольно новичок в jQuery, поэтому я довольно посредственна в структурировании моих утверждений о выборе хорошо, и я чувствую, что это, вероятно, простой вопрос, на который, возможно, ответили в прошлом, но я не мог получить информацию I искал в других вопросах. Спасибо за ваше терпение!
tKeyedBox в вашем коде является глобальной переменной, я вполне уверен, что вы бы хотели использовать локальный: var tKeyedBox = this –