Автор Тема: събмит метод в джаваскрипт  (Прочетена 4523 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

theSit

  • Full Member
  • ***
  • Благодарности
  • -Казани: 18
  • -Получени: 3
  • Публикации: 152
събмит метод в джаваскрипт
« -: 14 Ноември 2014, 15:04:31 »
Здравейте. Не мога да разбера какъв е смисъла да има този метод при положение, че формата се събмитва и без него. Това е код взет w3school.

Код: Javascript
  1. <?php if(!empty($_GET['fname'])) var_dump($_GET); ?>
  2. <!DOCTYPE html>
  3. <html>
  4. <body>
  5.  
  6. <p>Enter some text in the fields below, then press the "Submit form" button to submit the form.</p>
  7.  
  8. <form id="myForm" action="">
  9.   First name: <input type="text" name="fname"><br>
  10.   Last name: <input type="text" name="lname"><br><br>
  11.   <button type="button" onclick="myFunction()">Click Me!</button>
  12. </form>
  13.  
  14. <script>
  15. function myFunction() {
  16.  
  17.     document.getElementById("myForm").submit();
  18. }
  19. </script>
  20.  
  21. </body>
  22. </html>
  23.  

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: събмит метод в джаваскрипт
« Отговор #1 -: 14 Ноември 2014, 16:59:39 »
Ако изкараш бутона извън формата ще има повече смисъл :)
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

theSit

  • Full Member
  • ***
  • Благодарности
  • -Казани: 18
  • -Получени: 3
  • Публикации: 152
Re: събмит метод в джаваскрипт
« Отговор #2 -: 14 Ноември 2014, 18:05:00 »
Ако изкараш бутона извън формата ще има повече смисъл :)
Защото е бутон елемент ли?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: събмит метод в джаваскрипт
« Отговор #3 -: 14 Ноември 2014, 22:23:14 »
Тоя конкретно бутон не съм сигурен дали ще прати формата, но обикновено го прави submit бутона вътре в самата формата. Идеята на тази функция е да се използва друг елемент за пращане на формата, на практика можеш да го направиш при цъкане върху body тага да се праща форма с id myForm.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: събмит метод в джаваскрипт
« Отговор #4 -: 15 Ноември 2014, 09:37:05 »
Код: HTML
  1. <button> ......
  2. <input type="button" ...
  3. <input type = "submit"
...ако са във форма при клик ще събмитнат!
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

theSit

  • Full Member
  • ***
  • Благодарности
  • -Казани: 18
  • -Получени: 3
  • Публикации: 152
Re: събмит метод в джаваскрипт
« Отговор #5 -: 15 Ноември 2014, 11:55:31 »
Значи типа на елемента трябва да е "submit" за да може да се изпрати формуляра, така ли? Ако ли не, мога да ползвам javascript submit method за целта. Имам и още един въпрос.Защо се игнорира "return false" в следната ситуация,
Код: PHP
  1. <?php if(!empty($_GET['fname'])) var_dump($_GET); ?>
  2. <!DOCTYPE html>
  3. <html>
  4. <body>
  5.  
  6. <p>Enter some text in the fields below, then press the "Submit form" button to submit the form.</p>
  7.  
  8. <form id="myForm" action="">
  9.   First name: <input type="text" name="fname"><br>
  10.   Last name: <input type="text" name="lname"><br><br>
  11.   <button type="submit" onclick="myFunction()">Click Me!</button>
  12. </form>
  13.  
  14. <script>
  15. function myFunction() {
  16. return false;
  17.     document.getElementById("myForm").submit();
  18. }
  19. </script>
  20.  
  21. </body>
  22. </html>
  23.  

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: събмит метод в джаваскрипт
« Отговор #6 -: 15 Ноември 2014, 12:19:32 »
Не, типа на button/input трябва да е submit за да прати форма. Return false се игнорира щото формата и без javascript се праща. Ако имаше друг елемент, който да праща формата вече return-а щеше да спира изпълнението на код.

Код: Javascript
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title></title>
  5.     <script>
  6.     function myFunction() {
  7.         // return false;
  8.         document.getElementById("myForm").submit();
  9.     }
  10.     </script>
  11. </head>
  12. <body>
  13.     <form id="myForm" action="">
  14.       First name: <input type="text" name="fname"><br>
  15.       Last name: <input type="text" name="lname"><br><br>
  16.       <span onclick="myFunction()">submit button</span>
  17.         <!-- <button type="button" onclick="myFunction()">Click Me!</button>  -->
  18.     </form>
  19. </body>
  20. </html>
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: събмит метод в джаваскрипт
« Отговор #7 -: 15 Ноември 2014, 12:24:09 »
Значи типа на елемента трябва да е "submit" за да може да се изпрати формуляра, така ли? Ако ли не, мога да ползвам javascript submit method за целта. Имам и още един въпрос.Защо се игнорира "return false" в следната ситуация,
...
@TheSit, явно не прочиташ всички постове!
Код: HTML
  1. <button> ......
  2. <input type="button" ...
  3. <input type = "submit"
...ако са във форма при клик ще събмитнат!
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

theSit

  • Full Member
  • ***
  • Благодарности
  • -Казани: 18
  • -Получени: 3
  • Публикации: 152
Re: събмит метод в джаваскрипт
« Отговор #8 -: 15 Ноември 2014, 12:32:47 »
Цитат
@TheSit, явно не прочиташ всички постове!
Напротив, това не работи при мен -
Код: PHP
  1. <form id="myForm" action="">
  2.   First name: <input type="text" name="fname"><br>
  3.   Last name: <input type="text" name="lname"><br><br>
  4.   <button type="button" onclick="myFunction()">Click Me!</button>
  5. </form>
  6.  

И това -
Код: PHP
  1. <form id="myForm" action="">
  2.   First name: <input type="text" name="fname"><br>
  3.   Last name: <input type="text" name="lname"><br><br>
  4.   <input type="button" value="submitMe"/>
  5. </form>
  6.  

@Аваланш да разбирам, че има приоритети ли?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: събмит метод в джаваскрипт
« Отговор #9 -: 15 Ноември 2014, 12:52:20 »
Ми не бих го нарекъл приоритет, JavaScript-а се изпълнява - ако добавиш още код към функцията и той ще се прати. В случая е по-интересно спирането на изпъление на код. Както видя с return false няма да стане, защото формата е казано че ще се прати още в HTML-а, тоя return спира само изпълнението на javascript-а и ускорява пращането на формата. Има метод preventDefault, който в случая ще направи това, което искаш да направи return false, но той се слага върху event, ето и пример (на базата на документацията от мозила):
Код: Javascript
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title></title>
  5. </head>
  6. <body>
  7.     <form id="myForm" action="">
  8.         First name: <input type="text" name="fname"><br>
  9.         Last name: <input type="text" name="lname"><br><br>
  10.         <button type="submit">Click Me!</button>
  11.     </form>
  12.     <script>
  13.     function myFunction() {
  14.         document.getElementById("myForm").submit();
  15.     }
  16.     document.getElementById('myForm').addEventListener(
  17.         'submit', function(event) {
  18.             event.preventDefault();
  19.         }
  20.     );
  21.     </script>
  22. </body>
  23. </html>
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: събмит метод в джаваскрипт
« Отговор #10 -: 15 Ноември 2014, 13:00:24 »
Код: HTML
  1. <form id="myForm">
  2.   First name: <input type="text" name="fname"><br>
  3.   Last name: <input type="text" name="lname"><br><br>
  4.   <button>Click Me!</button>
  5. </form>
Ами така? http://jsfiddle.net/ce9hhbw9/1/

!!! тага button няма атрибут type="button"!!!
« Последна редакция: 15 Ноември 2014, 13:04:58 от HanKrum »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

theSit

  • Full Member
  • ***
  • Благодарности
  • -Казани: 18
  • -Получени: 3
  • Публикации: 152
Re: събмит метод в джаваскрипт
« Отговор #11 -: 15 Ноември 2014, 13:08:48 »
Код: HTML
  1. <form id="myForm">
  2.   First name: <input type="text" name="fname"><br>
  3.   Last name: <input type="text" name="lname"><br><br>
  4.   <button>Click Me!</button>
  5. </form>
Ами така? http://jsfiddle.net/ce9hhbw9/1/

!!! тага button няма атрибут type="button"!!!

Няма разлика  >:( От предложениете варианти, при мен работи само когато бутона е със " submit" тип.

Аваланш, този preventDefault() под всички ли браузъри ще работи?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: събмит метод в джаваскрипт
« Отговор #12 -: 15 Ноември 2014, 13:22:13 »
Много хубав въпрос, най-вероятно не (не се крий IE, за теб говоря). Гледам че в по-старите версии на IE номера става с returnValue.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!