У меня есть текстовое поле ввода внутри div
, которое находится в td
, теперь, когда пользователь вводит некоторый текст и нажимает ввод, он должен добавить дополнительный div с полем ввода к тому же td.Цель состоит в том, чтобы иметь несколько значений в последующих строках.
Я могу добавить div при нажатии клавиш, но проблема в том, что я не могу вызвать нажатие клавиши только один раз.Я использовал флаг, чтобы он срабатывал только один раз, но в моем случае он не работал.
До события нажатия клавиши
<div id="grid">
<table>
<tr>
<td class="first-row">
<div><input class ="td-input"></input></div>
</td>
</tr></table>
После добавления div на клавише нажатие dom будет похоже наниже
<div id="grid">
<table>
<tr>
<td class="first-row">
<div><input class ="td-input"></input></div>
<div><input class="td-input"></input></div>
</td>
</tr></table>
JQuery
$('#grid').on('keypress','td.first-row > div input.td-input',
function(event){
var key = (event.keyCode ? event.keyCode : event.which);
var currentTD,addDiv;
if(key == '13'){
currentTD = $(this).closest('td');
addDiv = '<div><input class="td-input"></input></div>';
currentTD.append(addDiv);
}
});
Я хочу, чтобы div добавлялся только один раз для каждого нажатия клавиши в текстовом поле ввода.С моим кодом будут добавлены 2 деления, если дважды нажать клавишу ввода.
Пожалуйста, обратитесь к изображению ниже для вывода.
$('#grid').on('keypress', 'td.first-row > div input.td-input', function(event){
var key = (event.keyCode ? event.keyCode : event.which);
var currentTD,addDiv;
if(key == '13'){
currentTD = $(this).closest('td');
addDiv = '<div class="additional-row"><input class="td-input"></input></div>';
currentTD.append(addDiv);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="grid">
<table>
<tr>
<td>
<div><input class ="td-input" placeholder="Enter here column 1"></input></div>
</td>
<td class="first-row">
<div><input class ="td-input" placeholder="Enter here column 2"></input></div>
</td>
</tr>
</table>