ФорумПрограммированиеJavaScript → Как обработать форму и собрать из нее строку с текстовыми элементами формы?

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

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 3:39

    Жаба код:

    id формы = "secForm"

    var data = "";
    var xdata = document.getElementById("secForm");
    for each (var item in xdata) {
    data = data + item;
    }


    в data попадает:

    string(5597) "[object HTMLInputElement][object HTMLInputElement][object HTMLSelectElement][object HTMLInputElement]FORMnull1[object HTMLDivElement][object NodeList][object Text][object Text][object Text][object Text][object NamedNodeMap][object HTMLDocument]function insertBefore() {
    [native code]
    }function replaceChild() {
    [native code]
    }function removeChild() {
    [native code]
    }function appendChild() {
    [native code]
    }function hasChildNodes() {
    [native code]
    }function cloneNode() {
    [native code]
    }function normalize() {
    [native code]
    }function isSupported() {
    [native code]
    }nullnullFORMfunction hasAttributes() {
    [native code]
    }FORMfunction getAttribute() {
    [native code]
    }function setAttribute() {
    [native code]
    }function removeAttribute() {
    [native code]
    }function getAttributeNode() {
    [native code]
    }function setAttributeNode() {
    [native code]
    }function removeAttributeNode() {
    [native code]
    }function getElementsByTagName() {
    [native code]
    }function getAttributeNS() {
    [native code]
    }function setAttributeNS() {
    [native code]
    }function removeAttributeNS() {
    [native code]
    }function getAttributeNodeNS() {
    [native code]
    }function setAttributeNodeNS() {
    [native code]
    }function getElementsByTagNameNS() {
    [native code]
    }function hasAttribute() {
    [native code]
    }function hasAttributeNS() {
    [native code]
    }123456789101112secForm[object HTMLCollection]7secFormpostfunction reset() {
    [native code]
    }410948690[object HTMLTableCellElement]


    #####################

    Мне надо содержимое следующих объектов:

    HTMLInputElement
    HTMLInputElement
    HTMLSelectElement
    HTMLInputElement
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 3:46, спустя 7 минут 14 секунд

    может что-то наподобие?


    var data = "";
    var xdata = document.getElementById("secForm");
    for each (var item in xdata) {
    data = data + xdata.elements[item].value);;
    }
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 5:18, спустя 1 час 32 минуты 22 секунды

    		for (var i=0;i<document.forms.secForm.elements.length-1;i++) {
    data = data + document.forms.secForm.elements.value;
    }


    так работает…

    только данные которые вводишь в элементы формы не появляются, то есть остаются старые данные.

    допустим что-то типа того:


    <?php

    $id = 2; //id поля в базе
    $val = "blabla"; //просто любой текст

    ?>

    <!– xhtml код –>

    <script type="text/javascript" language="JavaScript" src="JsHttpRequest.js"></script>
    <script type="text/javascript" language="JavaScript">
    function doLoadSection(action, value) {
    // Create new JsHttpRequest object.
    var req = new JsHttpRequest();
    // Code automatically called on load finishing.
    req.onreadystatechange = function() {
    if (req.readyState == 4) {
    // Write result to page element (_RESULT becomes responseJS).
    //document.getElementById('doLoadSectionResult').innerHTML =
    // req.responseJS.val;
    // Write debug information too (output becomes responseText).
    document.getElementById('doLoadSectionBody').innerHTML = req.responseText;
    }
    }

    var data = "";
    if(action == 'svSec') {
    for (var i=0;i<document.forms.secForm.elements.length-1;i++) {
    data = data + document.forms.secForm.elements.value;
    }
    }

    // Prepare request object (automatically choose GET or POST).
    req.open(null, 'ajax_backend.php', true);
    // Send data to backend.
    req.send( { act: action, val: value, data: data} );

    }
    </script>

    <!– xhtml код –>

    <form name="secForm" action="JavaScript:doLoadSection('svSec', '<?php print $id; ?>'); void(0);" method="post">
    <input type="text" name="c_name" value="<?php print $val; ?>" />
    <input type="submit" value="OK" />
    </form>

    <!– xhtml код –>



    то есть выводится форма у которой есть элемент "c_name" со значением "blabla"
    если изменить данные и нажать субмит, то в жабу попадают не новые данные, а остается blabla…
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 5:30, спустя 12 минут 7 секунд

    document.forms.secForm

    помойму можно заменить на document.getElementById('secForm')
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 5:32, спустя 1 минуту 51 секунду


    document.forms.secForm

    помойму можно заменить на document.getElementById('secForm')


    можно… но ИМХО не суть
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 6:38, спустя 1 час 5 минут 46 секунд

    vasa_c ПАМАГИ!!!))))
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 6:45, спустя 7 минут 26 секунд

    Уверен, что именно в момент вычисления data лажает? Может с аяксом проблемы. alert(data) сделай.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 9:18, спустя 2 часа 33 минуты 2 секунды


    Уверен, что именно в момент вычисления data лажает? Может с аяксом проблемы. alert(data) сделай.


    Спасибо, заработало все уже))

    до этого алерт выводил старые данные, но я перезагрузил FF вместе с плагинами (firebug, greasemonkey, web developer, html tidy и т.д.) и все заработало… я в шоке!!! мне FF и/или его плагины весь день убили, я все перерыл в сети по этому поводу… а это оказался FF… млин
    https://smappi.org/ - платформа по созданию API на все случаи жизни

Пожалуйста, авторизуйтесь, чтобы написать комментарий!