TARS166 Ответов: 2

Как добавить динамический идентификатор в текстовые поля без необходимости помещать текстовые поля в цикл?


Я пытаюсь присвоить идентификаторы некоторым текстовым полям, которые создаются динамически в цикле. И после того, как серия текстовых полей будет создана, я хочу вызвать функцию на главном текстовом поле, которая отражает данные, введенные в одно текстовое поле, во все другие текстовые поля.


*Главное текстовое поле, в которое будет введено значение*
<input class="form-control" type="text" name="add" id="add" onkeyup="sync()">


*скрипт для отражения данных во всех текстовых полях, введенных в основное текстовое поле*
function sync()
    {
     var n1 = document.getElementById('add0');
     var n2 = document.getElementById('add1');
     var n3 = document.getElementById('add2');
     var n4 = document.getElementById('add3');
     var n5 = document.getElementById('add4');
     var n6 = document.getElementById('add5');
     var n7 = document.getElementById('add6');
     var n8 = document.getElementById('add7');
     n8.value = n7.value = n6.value = n5.value = n4.value = n3.value = n2.value = n1.value;
    }



*Div, который находится в цикле, состоящем из текстовых полей, в которых данные будут отражаться из основного текстового поля*
<?php  while($res = pg_fetch_assoc($result)){ ?>
<div class="col-md-2 show-hide">
<input type="text" value="<?php echo $res['size']; ?> " readonly style="background-color: #F5F5F5;" class="form-control"/>
<div id="addition"></div>  <--- OUTPUT IS SUPPOSED TO BE GENERATED HERE
<select class="form-control">
<option>25%</option>
<option>50%</option>
<option>100%</option>
</select><br> 
</div><?php }?>


Что я уже пробовал:

*script for assigning dynamic id's*
<pre>for( var i=0; i<8; i++)    //i<9 because that's the maximum number of text 
                               //fields to be created is 8.     
    {        
    $('#addition').append('<input class="form-control" type="text" name="add" id="add'+ i +'" />');
    }



Проблема в том, что этот скрипт прекрасно работает в скрипке, но выходные данные не генерируются в реальной программе. И когда я использую скрипт внутри цикла в реальной программе, он создает серию текстовых полей только в первой итерации цикла while.
Есть ли способ только динамически создавать идентификаторы и добавлять их в область ввода, вместо того чтобы помещать сам ввод в цикл, как это сделал я?

2 Ответов

Рейтинг:
1

mehr.ah

Определите переменную и поместите ее в поле input id > id = variable.
затем определите обработчик событий и измените значение переменной на желаемое значение.
просто планируйте взять идентификатор ввода для вашей цели после того, как выше обработчик сработал >> Это означает, что вы должны не синхронизировать onkeyup для всех значений, а синхронизировать каждый элемент, когда это необходимо перед вашей основной целью .


Рейтинг:
1

W∴ Balboos, GHB

Это не сильно отличается от вашего предыдущего поста:
Как присвоить идентификатор динамически создаваемым текстовым полям?[^]

"добавьте динамический идентификатор в текстовые поля ... "

Вам нужно будет различать текстовые поля, чтобы поместить в них идентификаторы, и если у них нет идентификаторов, то как вы планируете выделить какой-то конкретный?   Судя по отсутствию качества в вашем коде, маловероятно, что вы сможете справиться с этим на "узловом уровне".


TARS166

Все в порядке, я все понял. Мне просто нужно было назначить динамические идентификаторы в той области, где должен был отображаться код. Теперь код работает, спасибо :)