Post формы через Javascript или стандартно

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем admin, 24 авг 2005.

  1. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Такой вопрос есть.

    Отличаются-ли внутренне конструкции.

    HTML:
    <input type="button" onclick="document.adminForm.submit();" />

    и

    <input type="submit" />
    спросил вот почему.
    начал я баловаться редактором SPAW, так вот если отправлять по первому принципу, то в массив $_POST значение этого редактора идёт старое. Например если до этого там было написано "Hello people", то изменяя в нем это значение, например на "Hello boys & girls" мы в $_POST получим "Hello people", а если делать через второй вариант без Javascript, то всё нормально. Массив меняется.
    Как бы это дело обмануть? Т.к. через тип submit отправлять форму меня не совсем устраивает.
     
  2. Andrew Stephanoff

    Andrew Stephanoff Гость

    по идее не должны отличаться..
     
  3. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Для: Andrew Stephanoff
    это по идее :)
    при отправке формы через метод submit(), а не через кнопку <input type="submit" /> в форме не происходит событие "onsubmit", поэтому SPAW (а также большинство WYSIWYG редакторов) не обновляет значение элемента формы, к которому он привязан.
     
  4. Andrew Stephanoff

    Andrew Stephanoff Гость

    на w3c.org написано, что
    хотя набросал тестовую страничку -- действительно, onSubmit() не вызывается :)
     
  5. Andrew Stephanoff

    Andrew Stephanoff Гость

    но проблему не понял все равно.. сделал тестовую страничку с двумя кнопками и скрипт, который выводит на экран переменную.. как я не отправлял -- результат одинаковый...
    Код (Text):
    <html>
    <head>
    <title>test</title>
     <script language="JavaScript">
    onClick = function() {
     var frmTest = document.getElementById("frmTest");
     frmTest.submit();
    }
     </script>
    </head>

    <body>

    <form action="test.php" method="post" target="_blank" id="frmTest">
     <input type="text" name="txtTest" value="" />
     <input type="submit" value="submit" />
     <input type="button" value="button" onclick="onClick();" />
    </form>

    </body>
    </html>
    Код (Text):
    <?php
     $txt_test = $_POST["txtTest"];
     echo $txt_test;
    ?>
     
  6. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Для: Andrew Stephanoff
    знаю, но я понял в чём фишка.
    когда делаешь frmTest.submit();, то не выполняется событио onSubmit для формы.
    решение такое.
    перед frmTest.submit(); надо вставить
    Код (Text):
        try {
    document.frmTest.onsubmit();
    }
    catch(e){}
     
  7. Andrew Stephanoff

    Andrew Stephanoff Гость

    <!--QuoteBegin-Серёга+30:08:2005, 11:14 -->
    <span class="vbquote">(Серёга @ 30:08:2005, 11:14 )</span><!--QuoteEBegin-->Для: Andrew Stephanoff
    знаю, но я понял в чём фишка.
    когда делаешь frmTest.submit();, то не выполняется событио onSubmit для формы.
    решение такое.
    перед frmTest.submit(); надо вставить
    Код (Text):
        try {
    document.frmTest.onsubmit();
    }
    catch(e){}
    [snapback]24269" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    onSubmit не вызывается, это я заметил :p но вот почему у тебя в $_POST[] попадали старые значения не понял..
    и еще, ты вызываешь frmTest.onSubmit(); но это же событие, а не метод, вроде его можно только назначить, да и в спецификации DOM у form только два метода: void submit(); и void reset();
     
  8. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Для: Andrew Stephanoff
    я знаю про это.
    тем не менее it works! %)
    загадок искать не буду, почему что и как. просто не времени, надо делать проект.
    просто скачай SPAW Editor и потести его, если интересно.
     
  9. Andrew Stephanoff

    Andrew Stephanoff Гость

    хммм.. :p очень интересно :p у меня конструкция frmTest.onsubmit(); не прокатила :p ни в IE, ни в opera ни в FireFox

    Код (Text):
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
     <title>test</title>
     <script language="JavaScript">
    onSubmit = function() {
     window.alert("hooray!!");
    }  
    onClick = function() {
     var frmTest = document.getElementById("frmTest");
     try {
       frmTest.onSubmit();
     } catch(e) {
       window.alert("ooops!!");
     }
     frmTest.submit();
    }
     </script>
    </head>

    <body>

    <form id="frmTest" onsubmit="onSubmit();">
     <input type="submit" value="submit" />
     <input type="button" value="button" onclick="onClick();" />
    </form>

    </body>
    </html>
    но вот такой вариант работает
    Код (Text):
    onClick = function() {
     var frmTest = document.getElementById("frmTest");
     onSubmit();
     frmTest.submit();
    }
     
Загрузка...

Поделиться этой страницей