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

JS Есть ли универсальный метод получения значения объектов на форме?

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

Озадачился вопросом считывания значений всех элементов формы.
Нашел вот такой метод перечитывания всех элементов.

<script>    
    }   function isEmail() {
        var form = window.document.forms[0];
        var all_elements="";
        for (var i = 0; i<form.elements.length; i++) {
            // if (form.elements[i].type == "text") {
            //     form.elements[i].value = ""}
            var elem1 = document.getElementById (form.elements[i]);
            //var defValue1 = elem1.defaultValue;
            all_elements=all_elements+form.elements[i].name+" значение "+";";
        }
        document.getElementById("demo_2").innerHTML =all_elements;
        // document.getElementById("demo_2").innerHTML = document.getElementById("email1").value;
    }
</script>
<div id="demo_2"></div>


Проблема в том, что на форме есть объекты типа INPUT CHECK_BOX и типа TEXT и типа TEXT_AREA. Для CHECK_BOX такой метод не годится document.getElementById("email1").value

Существует ли какая-нибудь универсальный метод считывания значений объектов формы?
  • Вопрос задан
  • 483 просмотра
Решения вопроса 1
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Если вам, кроме остальных элементов формы, надо получать значения только выбранных input с типом checkbox и radio, то можно так
<form>
  <select name="dropdown">
    <option value="opt_1">Opt 1</option>
    <option value="opt_2" selected>Opt 2</option>
    <option value="opt_3">Opt 3</option>
  </select>
  <input type="text" name="some_text" value="Text">
  <input type="checkbox" name="checkbox_1" value="checked" checked>
  <input type="checkbox" name="checkbox_2" value="not checked">
  <input type="radio" name="radio_group" value="not checked">
  <input type="radio" name="radio_group" value="checked" checked>
  <input type="radio" name="radio_group" value="not checked">
  <textarea name="bigtext">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit, ab tempora voluptate assumenda!</textarea>
</form>
<div id="demo"></div>

var result = [];
[].forEach.call(document.querySelector('form').elements, function(el) {
  if (['checkbox', 'radio'].indexOf(el.type) === -1 || el.checked) {
    result.push(el.name + ' > ' + el.value);
  }
});
demo.innerHTML = result.join('<br>');
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rou1997
@Rou1997
Ошибаетесь, для всех до единого типов элементов годится.
Ответ написан
drno-reg
@drno-reg Автор вопроса
см не кратко
for (var i = 0; i<form.elements.length; i++) {
            var elem = document.getElementById (form.elements[i]);
            var defValue = elem.value;
            all_elements=all_elements+form.elements[i].name+" значение "+defValue+";";
        }


не работает
Ответ написан
Ваш ответ на вопрос

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

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