Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][PHP] Jak odczytać wartości pól wysłanego formularza?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
witosza
Próbowałem metodą POST i GET
W obu przypadkach wysyłane są tylko nazwy zmiennych.
W przypadku GET'a URL wygląda następująco: index.php?plec=&telefon=

  1.  
  2. <meta charset="UTF-8" />
  3. <title>Ankieta</title>
  4.  
  5. <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
  6. <script type="text/javascript" src="js/jquery-ui-1.8.2.custom.min.js"></script>
  7. <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.2.custom.css" rel="stylesheet" />
  8.  
  9. <script type="text/javascript">
  10. $(function() {
  11.  
  12. $("#dialog").dialog("destroy");
  13.  
  14. var plec = $("#plec"), telefon = $("#telefon"),
  15. allFields = $([]).add(plec).add(telefon),
  16. tips = $(".validateTips");
  17.  
  18. function updateTips(t) {
  19. tips
  20. .text(t)
  21. .addClass('ui-state-highlight');
  22. setTimeout(function() {
  23. tips.removeClass('ui-state-highlight', 1500);
  24. }, 500);
  25. }
  26.  
  27. function checkLength(o,n,min,max) {
  28.  
  29. if ( o.val().length > max || o.val().length < min ) {
  30. o.addClass('ui-state-error');
  31. updateTips("Length of " + n + " must be between "+min+" and "+max+".");
  32. return false;
  33. } else {
  34. return true;
  35. }
  36.  
  37. }
  38.  
  39. function checkRegexp(o,regexp,n) {
  40.  
  41. if ( !( regexp.test( o.val() ) ) ) {
  42. o.addClass('ui-state-error');
  43. updateTips(n);
  44. return false;
  45. } else {
  46. return true;
  47. }
  48.  
  49. }
  50.  
  51. $("#dialog-form").dialog({
  52. autoOpen: false,
  53. height: 300,
  54. width: 350,
  55. modal: true,
  56. buttons: {
  57. 'Prześlij ankietę': function() {
  58. var bValid = true;
  59. allFields.removeClass('ui-state-error');
  60.  
  61. bValid = bValid && checkLength(plec,"płeć",1,100);
  62.  
  63. if(telefon.val().length > 0){
  64. bValid = bValid && checkLength(telefon,"telefon",9,11);
  65. bValid = bValid && checkRegexp(telefon,/^([0-9])+$/,"Dozwolone tylko cyfry");
  66. }
  67.  
  68. if (bValid) {
  69.  
  70. $(this).dialog('close');
  71. $('form#test').submit();
  72. }
  73. },
  74. Anuluj: function() {
  75. $(this).dialog('close');
  76. }
  77. },
  78. close: function() {
  79. allFields.val('').removeClass('ui-state-error');
  80. }
  81. });
  82.  
  83.  
  84.  
  85. $('#ankieta')
  86. .button()
  87. .click(function() {
  88. $('#dialog-form').dialog('open');
  89. });
  90.  
  91. });
  92. </script>
  93. </head>
  94.  
  95. <?
  96. if(isset($_GET['plec'])){
  97.  
  98. echo "płec: ".$_GET['plec'];
  99. echo "telefon: ".$_GET['telefon'];
  100.  
  101. }
  102. ?>
  103.  
  104. <div id="dialog-form" title="Ankieta">
  105. <p class="validateTips"></p>
  106. <form id="test" method="GET">
  107. <label for="plec">Płeć pacjenta</label>
  108. <select name="plec" id="plec" class="text ui-widget-content ui-corner-all">
  109. <option value=""></option>
  110. <option value="k">kobieta</option>
  111. <option value="m">mężczyzna</option>
  112. </select>
  113. <label for="telefon">Nr telefonu</label>
  114. <input type="text" name="telefon" id="telefon" value="" class="text ui-widget-content ui-corner-all" />
  115. </form>
  116. </div>
  117. <button id="ankieta">Ankieta</button>
  118. </body>
  119. </html>
erix
http://api.jquery.com/serialize/ winksmiley.jpg
witosza
Cytat(erix @ 22.07.2010, 13:44:02 ) *


Jak tego dokonać?
Próbowałem dodać przy deklaracji zmiennych
  1. var plec = $("#plec").serialize(), telefon = $("#telefon").serialize(),

i owszem udało się ale pojawił się błąd: o.val is not a function
gdy pominąłem funkcje walidujące, wartości z pól formularza zostały przesłane.

Gdy dokonuję serializacji przed metodą wysyłającą formularz
  1. if (bValid) {
  2. plec.serialize();
  3. telefon.serialize();
  4.  
  5. $('form#test').submit();
  6. }


wartości nie przechodzą sad.gif
erix
serialize działa na cały formularz, nie trzeba każdego pola z osobna obrabiać, co - zresztą - jest pokazane na przykładzie w dokumentacji.
witosza
Cytat(erix @ 22.07.2010, 18:02:05 ) *
serialize działa na cały formularz, nie trzeba każdego pola z osobna obrabiać, co - zresztą - jest pokazane na przykładzie w dokumentacji.


Niepotrzebna jest w tym przypadku metoda serialize()
Problem był banalny, wystarczyła zamiana kolejności dwóch linii kodu smile.gif

było:

  1. $(this).dialog('close');
  2. $('form#test').submit();


pownno być:

  1. $('form#test').submit();
  2. $(this).dialog('close');


Zamykałem okno formularza z danymi
a następnie przesyłałem pusty formularz.

Dzięki za pomoc, pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.