У мене є три підходи, тут ви можете використовувати обидва <input>
або <textarea>
відповідно до своїх вимог.
1. Використовуйте Input in <td>
.
Використовуючи <input>
елемент у всіх <td>
s,
<tr><td><input type="text"></td>....</tr>
Крім того, ви можете змінити розмір вхідного розміру до його розміру td
. напр.,
input { width:100%; height:100%; }
Ви можете додатково змінити колір рамки поля введення, коли він не редагується.
2. Використовуйте contenteditable='true'
атрибут. (HTML5)
Однак якщо ви хочете використовувати contenteditable='true'
, ви також можете зберегти відповідні значення в базі даних. Домогтися цього можна за допомогою аякса.
Ви можете прикріпити keyhandlers keyup
, keydown
, і keypress
т.д. в <td>
. Крім того, добре використовувати деяку затримку () з тими подіями, коли користувач постійно вводить, подія ajax не спрацьовує при кожному натисканні клавіші користувача. наприклад,
$('table td').keyup(function() {
clearTimeout($.data(this, 'timer'));
var wait = setTimeout(saveData, 500); // delay after user types
$(this).data('timer', wait);
});
function saveData() {
// ... ajax ...
}
3. Append , <input>
щоб <td>
при її натисканні.
Додайте вхідний елемент, td
коли <td>
клацніть на, замініть його значення відповідно до значення td
's. Коли вхід розмито, змініть значення `td на значення входу. Все це за допомогою JavaScript.