drno-reg
@drno-reg
см не кратко

Каким образом запросить все измененные элементы формы?

Здравствуйте.

На форме есть множество элементов, которые формируются динамическим образом.

<table class="table">

                                    <c:forEach var="row" items="${rs0.rows}">
                                        <c:set var="SIGNIFICATIVE" value="${row.SIGNIFICATIVE}"/>
                                        <c:set var="ID_SIGNIFICATIVE" value="${row.ID_SIGNIFICATIVE}"/>
                                        <tr>
                                            <td>  <input type="checkbox" id="${ID_SIGNIFICATIVE}" NAME="CHECKBOX_${ID_SIGNIFICATIVE}"></td> <td style="width:50%">${SIGNIFICATIVE}</td>
                                            <td><div class="input-group"><input type="text" class="form-control" id="${ID_SIGNIFICATIVE}" NAME="TEXT_${ID_SIGNIFICATIVE}" > <span class="input-group-addon">,%</span> </div></td>
                                        </tr>
                                    </c:forEach>

                                </table>


Далее информацию из этих элементов формы необходимо занести в БД.
Подскажите метод, которым возможно получить список измененных элементов формы.
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
drno-reg
@drno-reg Автор вопроса
см не кратко
получилось сделать таким образом, здесь запрашивается состояние всех объектов формы, плюс отфильтровываются объекты формы типа ['checkbox', 'radio', 'button', 'submit']. и в vars_for_update добавляются только те, по которым было изменение

<SCRIPT language="javascript">
   function GetValue () {
        var result = [];
        var vars_for_update="";
        [].forEach.call(document.querySelector('form').elements, function (el) {
            if (['checkbox', 'radio', 'button', 'submit'].indexOf(el.type) === -1 ) // || el.checked
            {
                //var elem = el.name;
                var defValue = el.defaultValue;
                var currvalue = el.value;
                var index = el.selectedIndex;
                if (index) defValue = el.options[0].value;
                if (defValue == currvalue || index === 0) {
                    result.push(el.name + ' :: ' + el.value+' :: '+" Значение не изменилось");
                } else {
                    result.push(el.name + ' :: ' + el.value+' :: '+" Значение изменилось с " + defValue +
                            "\n  на " + currvalue);
                    vars_for_update=vars_for_update+el.name + '==' + el.value+"<>;";
                }
            }
        });
        demo.innerHTML = result.join('<br>');
        if (vars_for_update!="") {
            document.getElementById("Text_Update").value=vars_for_update;              
        }
    }
</SCRIPT>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nepritimov_m
@nepritimov_m
Frontend dev.
Все значения формы можно получить при помощи jQuery метода .serializeArray().
Посмотри, как там все реализовано и сделай на js.

Если интересует получение ТОЛЬКО измененных данных - после редактирования каждого поля записывать измененные данные в объект и в базу отправлять только эти данные.

Реализовать это можно так:
Повесить слушатель изменения содержимого на каждое поле и при возникновении события записывать значения в объект.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы