У меня есть динамически сгенерированная таблица, которая содержит флажок для каждой строки, некоторые данные и поле ввода текста.
Я хочу автоматически установить флажок для выбранной строки после ввода текста в текстовое поле этой строки. Наконец, когда нажата кнопка «Готово», я хочу, чтобы все невыбранные строки были скрыты от печати. Конечным результатом будет таблица, содержащая только выбранные строки (т. е. отмеченные флажком) и их значения.
Вот класс печати css, чтобы скрыть невыбранные строки:
<style type="text/css" media="print">
.grid .hidden tr {
display:none;
}
</style>
Вот HTML:
<table id="data" class="grid">
<thead>
<tr>
<th> </th>
<th>Part Number</th>
<th>Description</th>
<th>Qty to Order</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" class="check"></td>
<td>1234</td>
<td>Description data goes here</td>
<td><input type="text" class="inputData"></td>
</tr>
<tr>
<td><input type="checkbox" class="check"></td>
<td>3454</td>
<td>Description data goes here</td>
<td><input type="text" class="inputData"></td>
</tr>
<tr>
<td><input type="checkbox" class="check"></td>
<td>6787</td>
<td>Description data goes here</td>
<td><input type="text" class="inputData"></td>
</tr>
</tbody>
</table>
<button id="clicker">Finish</button>
Наконец, вот файл jQuery. Это установка всех флажков при вводе текста в текстовое поле, а не только одного для этой строки (чего я не понимаю), и не присвоение «скрытого» класса строкам без флажка - класс не назначается вообще.
$(document).ready(function() {
//Check for input in text field
$('#data > tbody > tr').each(function() {
$(".inputData").change(function() {
if ($(this).val().length > 0) {
$(".check").prop("checked",true);
} else {
$("tr").addClass("hidden");
}
});
});
$("#clicker").click(function() {
window.print();
return false;
});
});
</script>
Моя логика при построении этого заключалась в том, чтобы убедиться, что мы выбираем только строки в таблице с идентификатором данных. Первая функция будет перебирать каждую строку, просматривая текстовое поле, и если длина этого поля больше 0, установите флажок. В противном случае присвойте класс «скрытый», что предотвратит его печать. Наконец, просто назначьте событие нажатия на кнопку.
Любая помощь приветствуется.
Вот jsFiddle