Захват всего HTML в форме, включая значения текстовых полей без постов - PullRequest
1 голос
/ 06 января 2011

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

Я разработал Javascript (JQuery) для генерациивложенные категории и поля ввода для заполнения пользователем.

Мне нужно захватить этот точный сгенерированный HTML, включая значения в полях ввода, чтобы при возвращении для редактирования этой формы они оставались такими же, как в последний разoff.

Я пытался использовать $ ("# myForm"). html () и сохранить его в скрытой текстовой области, которая сохраняется в базе данных.Это нормально, за исключением того, что .html () НЕ захватывает то, что было введено в поля ввода.

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

Я думал связать события keyup со всеми полями, чтобы обновить их собственное поле значений, и тогда .html () сможет его затем захватить?Есть ли лучший способ сделать это?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 06 января 2011

Если у вас возникли проблемы с анализом сгенерированного html-кода для регенерации формы, вероятно, будет проще использовать встроенную функцию сериализации jQuery для хранения значений формы:

http://api.jquery.com/serialize/

1 голос
/ 10 апреля 2013

Я не знаю, ищите ли вы это.У меня была похожая проблема, и после некоторых исследований я обнаружил, что это может решить мою проблему (не слишком эффективно, но этого достаточно):

        $('#form input:text').each(
            function(){
                $(this).attr('value', $(this).val());
            });

        $('#form input:radio').each(
            function(){
                if($(this).is(':checked')) {
                    $(this).attr('checked', 'checked');
                }
                else{
                    $(this).removeAttr('checked');
                }
            });
        // I only give sample for input text and input radio
        var html = $("#form ").html();
        console.log (html);
0 голосов
/ 06 января 2011

Зачем вам нужно хранить HTML формы в базе данных?
Что если форма изменится (новые поля будут добавлены / удалены как часть выпуска)?
Вместо этого сохраните значения полей с помощью jQuery.serialize, а затем заполните поля в форме на основе сохраненной строки json.

0 голосов
/ 06 января 2011

Не могли бы вы сохранить их в содержимом массива и сохранить их в БД, а затем сохранить указатель на это в файле Cookie, сеансе или вернуть его при входе пользователя в систему?

Вы можете заполнитьHTML-код, сгенерированный с использованием метода, который вы упомянули выше, но вам придется перебирать поля и записывать значения данных, введенные в этот момент, в массив, который вы собираетесь записать обратно в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...