У меня есть форма с динамически добавленными полями. Я хочу отображать типизированный контент в одном входе в другое field
со сценарием следующим образом:
<script>
$(document).ready(function () {
$('#field').keyup(function(){
$('#target').html($(this).val());
});
$('#field_2').keyup(function(){
$('#target2').html($(this).val());
});
});
</script>
пока все работает над первой проблемой поля со вторым, потому что введенные символы не target2
метке target2
.
Может ли кто-нибудь дать мне подсказку, как я могу сделать текст введенным в 1-ое добавленное входное шоу во 2-м лейбле?
Попробуйте делегировать событие статическому ближайшему родительскому .on()
методом .on()
:
$('#buildyourform').on('keyup', '#field_2', function(){
$('#target2').html($(this).val());
});
Попробуйте делегировать так:
$('form').on("keyup", "#field", function(){..});
Это действительно крутая проблема. Однако вам нужно использовать событие.on, точнее, решение вашей проблемы:
$('#buildyourform').on("keyup", ".textComesFromThisInput", function(){
var index = $('#buildyourform').index($(this).parent());
var targetDiv = $(':nth-child('+index+')');
targetDiv.find('label').html($(this).val());
});
<div id="buildyourform">form</div>
<div class="parentOfTextInputs">
<div>
<input type="text" class="textComesFromThisInput">
</div>
...
</div>
<div class="parentOfTargetTextLabelsAndInputs">
<div>
<label class="textGoesInThisLabel"></label>
<input type="text" class=".thisInputDoesNothing">
</div>
...
</div>
</div>
Чтобы все js вам нужно было написать, если вы создадите свой html. Когда вы нажимаете стрелку для добавления новых элементов, вы просто добавляете div с меткой и вводом в нее. В.parentOfTargetTextLablesAndInputs. Вы проверяете, какие входные данные соответствуют метке, используя: nth-child()
Это может работать для бесконечного количества элементов, добавленных этой стрелкой без дополнительных js.
Повеселись.
Это не будет работать для динамически добавленных объектов. Используйте вместо этого:
$('#field_container').on("keyup", "#field", function(){
$('#target').html($(this).val());
});
Пытаться
$(document).on("keyup","#field2_2", function() {
// do something
});