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

admin

Well-Known Member
08.08.2003
2 754
1
#1
Такой вопрос есть.

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

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

и 

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

admin

Well-Known Member
08.08.2003
2 754
1
#3
Для: Andrew Stephanoff
это по идее :)
при отправке формы через метод submit(), а не через кнопку <input type="submit" /> в форме не происходит событие "onsubmit", поэтому SPAW (а также большинство WYSIWYG редакторов) не обновляет значение элемента формы, к которому он привязан.
 
A

Andrew Stephanoff

Гость
#5
но проблему не понял все равно.. сделал тестовую страничку с двумя кнопками и скрипт, который выводит на экран переменную.. как я не отправлял -- результат одинаковый...
Код:
<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>
Код:
<?php
 $txt_test = $_POST["txtTest"];
 echo $txt_test;
?>
 

admin

Well-Known Member
08.08.2003
2 754
1
#6
Для: Andrew Stephanoff
знаю, но я понял в чём фишка.
когда делаешь frmTest.submit();, то не выполняется событио onSubmit для формы.
решение такое.
перед frmTest.submit(); надо вставить
Код:
	try {
document.frmTest.onsubmit();
}
catch(e){}
 
A

Andrew Stephanoff

Гость
#7
<!--QuoteBegin-Серёга+30:08:2005, 11:14 -->
<span class="vbquote">(Серёга @ 30:08:2005, 11:14 )</span><!--QuoteEBegin-->Для: Andrew Stephanoff
знаю, но я понял в чём фишка.
когда делаешь frmTest.submit();, то не выполняется событио onSubmit для формы.
решение такое.
перед frmTest.submit(); надо вставить
Код:
	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();
 

admin

Well-Known Member
08.08.2003
2 754
1
#8
Для: Andrew Stephanoff
я знаю про это.
тем не менее it works! %)
загадок искать не буду, почему что и как. просто не времени, надо делать проект.
просто скачай SPAW Editor и потести его, если интересно.
 
A

Andrew Stephanoff

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

Код:
<!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>
но вот такой вариант работает
Код:
onClick = function() {
 var frmTest = document.getElementById("frmTest");
 onSubmit();
 frmTest.submit();
}