Как я могу получить значение легенды набора полей и передать это значение в скрытое поле


Мне нужен способ добавить скрытое поле в набор полей, который содержит значение легенды этого набора полей.

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

Вот что у меня есть до сих пор:

<script type="text/javascript">
var theLegend = $('legend');  
    $('<input type="hidden"name="hiddenList[]" value="' + theLegend.val() + '">').insertAfter('legend');
</script>

В целом я пытаюсь добиться того, чтобы значение легенды набора полей передавалось в базу данных. Мне нужно, чтобы скрытые поля были в пределах их соответствующих наборов полей. То формы создаются с помощью конструктора форм в CMS, и я не могу "взломать" код для конструктора форм, поэтому мне нужен способ сделать это с помощью jquery/javascript, и я в значительной степени новичок в jquery...

2 2

2 ответа:

Я бы предложил что-то вроде следующего:

$('legend').each(
    function(i,e){
        var that = $(e),
            parent = that.closest('fieldset'),
            text = that.text();
        $('<input />', {'type' : 'hidden', 'name' : 'hiddenList[]', 'value' : text})
            .appendTo(parent);
    });

JS Fiddle demo .

Чтобы увидеть вывод, щелкните правой кнопкой мыши и выберите "проверить элемент" в тексте legend.

Одна из проблем, с которой вы столкнулись, заключается в том, что вы использовали val() для извлечения текста элемента (только input, а textarea элементы имеют value/val()), тогда как text() - это то, что вы хотите в этом случае.

Как только вы выбрали свою легенду, используйте .метод text() вместо .val ()

theLegend.text()