#javascript #jquery #select #dynamic #onchange
#javascript #jquery #выберите #динамический #onchange
Вопрос:
У меня есть динамически генерируемая коллекция из нескольких пар выбора / ввода с сгенерированными идентификаторами.
Урезано:
<?php foreach ($products as $product) { ?>
<select id="option_<?php echo $matching_id; ?>">
<?php foreach ($options as $option) { ?>
<option title="<?php echo $inputvalue ?>"></option>
<?php } ?>
</select>
<input id="update_<?php echo $matching_id; ?>" type="text" value="" />
<?php } ?>
У меня есть этот jQuery для обновления поля ввода атрибутом title (необходимо использовать title, поскольку атрибут value необходим для чего-то другого) выбранной опции:
$(document).ready(function () {
$('select').change(function() {
$('input').val($(this).find("option:selected").attr("title"));
});
});
Конечно, это неправильно. Он обновляет ВСЕ поля ввода одним и тем же значением, независимо от того, какое поле выбора изменено.
Для изменения мне нужно только поле ввода с соответствующим идентификационным номером. Переменная $matching_id всегда является числом, если это имеет значение.
Может ли какой-нибудь полезный человек указать мне правильное направление?
Ответ №1:
$(document).ready(function () {
$('select[id^="option_"]').change(function() {
$('input[id="update_' $(this).attr('id').replace('option_', '') '"]').val($(this).find("option:selected").attr("title"));
});
});
Выбирает только select
s, когда они id
начинаются с "option"
, не обязательно $matching_id
должно быть числовым.
Ответ №2:
$(function(){
$('select').change(function(){
$('#update_' $(this).attr('id').replace(/D/g,'')).val($(this).find("option:selected").attr("title"));
});
});
Если какой-либо выбор изменяется, он находит элемент [input] с идентификатором ‘update_’ плюс числовая часть его собственного идентификатора и устанавливает его значение равным названию выбранной опции.