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

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

  • adw0rd

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

    Spritz 27 сентября 2007 г. 6: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
    adw/0
  • adw0rd

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

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

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


    var data = "";
    var xdata = document.getElementById("secForm");
    for each (var item in xdata) {
    data = data + xdata.elements[item].value);;
    }
    adw/0
  • adw0rd

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

    Spritz 27 сентября 2007 г. 8: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 = &quot;blabla&quot;; //просто любой текст

    ?>

    <!– xhtml код –>

    <script type=&quot;text/javascript&quot; language=&quot;JavaScript&quot; src=&quot;JsHttpRequest.js&quot;></script>
    <script type=&quot;text/javascript&quot; language=&quot;JavaScript&quot;>
    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(&#39;doLoadSectionResult&#39;).innerHTML =
    // req.responseJS.val;
    // Write debug information too (output becomes responseText).
    document.getElementById(&#39;doLoadSectionBody&#39;).innerHTML = req.responseText;
    }
    }

    var data = &quot;&quot;;
    if(action == &#39;svSec&#39;) {
    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, &#39;ajax_backend.php&#39;, true);
    // Send data to backend.
    req.send( { act: action, val: value, data: data} );

    }
    </script>

    <!– xhtml код –>

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

    <!– xhtml код –>



    то есть выводится форма у которой есть элемент &quot;c_name&quot; со значением &quot;blabla&quot;
    если изменить данные и нажать субмит, то в жабу попадают не новые данные, а остается blabla…
    adw/0
  • md5

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

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

    document.forms.secForm

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

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

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


    document.forms.secForm

    помойму можно заменить на document.getElementById(&#39;secForm&#39;)


    можно… но ИМХО не суть
    adw/0
  • adw0rd

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

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

    vasa_c ПАМАГИ!!!))))
    adw/0
  • vasa_c

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

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

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

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

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


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


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

    до этого алерт выводил старые данные, но я перезагрузил FF вместе с плагинами (firebug, greasemonkey, web developer, html tidy и т.д.) и все заработало… я в шоке!!! мне FF и/или его плагины весь день убили, я все перерыл в сети по этому поводу… а это оказался FF… млин
    adw/0

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