Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery]Przypisanie danych z formularza do zmiennej
Forum PHP.pl > Forum > Przedszkole
corvus606
Mam nadzieję, że temat się nie powtarza, nic takiego nie dałem rady wyszukać :-)

Potrzebuję napisać skrypt przypisujący to co zostanie wpisane do formularza:
  1. <form id="htmlForm" action="post.php" method="post">
  2. <input type="text" name="message"/>
  3. <input type="submit" value="Submit!" />
  4. </form>

do zmiennej. I powiem szczerze, że jestem w absolutnej kropce, a podejrzewam, że jest to proste i oczywiste ;-)
Dlatego też serdecznie proszę o dobrą radę.
prowseed
zdarzenie onclick dla inputa + return false. Bo rozumiem, ze chcesz przypisac zmienna bez odswiezania strony [sadzac po jquery w temacie]?
corvus606
Dzięki wielkie :-)
Zrobiłem tak:
  1. <form action="#" method="post" accept-charset='UTF-8'>
  2. <input type="text" name="ANS" autocomplete="off"/>
  3. <input type="button" name="submit" value="Submit me!" id="ANS" />


[JAVASCRIPT] pobierz, plaintext
  1. $("#ANS").click(function () {
  2. var ANS = $(':input').val()
  3. });
[JAVASCRIPT] pobierz, plaintext


Działa jak złoto, ale jest ALE - chciałbym, żeby działało nie tylko po naciśnięciu przyciska, ale także po potwierdzeniu wpisanej wartości klawiszem enter. Da się coś takiego zrobić?
melkorm
[JAVASCRIPT] pobierz, plaintext
  1. $("#htmlForm").submit(function () {
  2.  
  3. var ANS = $(':input').val()
  4. return false;
  5. });
[JAVASCRIPT] pobierz, plaintext
corvus606
Dziękuję serdecznie za dotychczasową pomoc :-)
Mam drobny follow-up, ostatecznie zrobiłem to w ten sposób:

  1. <form method="post" accept-charset='UTF-8'>
  2. <div class="question">
  3. <input type="text" name="An2"id="form"/>
  4. <input type="button" name="submit" value="Submit me!" id="ANS2" />
  5. </form>
  6.  
  7. <div id="good" class="ans">
  8. <p>Dobrze</p>
  9. </div>
  10.  
  11. <div id="bad" class="ans">
  12. <p>Źle</p>
  13. </div>
  14. </div>


[JAVASCRIPT] pobierz, plaintext
  1. $(document).keypress(function(e) {if(e.keyCode == 13)
  2. {var An2 = $(':input').val()
  3. if (An2 == Aaa2) {
  4. $("#good").show("fast");
  5. }
  6. else{
  7. $("#bad").show("fast");
  8. }
  9. return false
  10. };
  11. });
[JAVASCRIPT] pobierz, plaintext


Problem - jeżeli odpowiedź jest poprawna pojawia się zarówno #good jak i #bad.
Z niecierpliwością czekam na propozycje ;-)
Niktoś
Brak spacji i złe nazewnictwo id pola input -zmień id na inne ,bo form jest niejako nazwą zarezerwowaną.
  1. <input type="text" name="An2"id="form"/>

zmień na:
  1. <input type="text" name="An2" id="innaNazwa"/>

Po za tym linijka z :
var An2 = $(':input').val() -dotyczy każdego tagu input w twoim dokumencie ,i dlatego wywala Tobie good i bad.
Zmień na:
  1. var An2 = $('#innaNazwa').val();

Poza tym ,używanie metody e.keyCode==13,nie należy do najmądrzejszych rozwiązań,pomyślałes jak ktoś będzie miał inny układ klawiatury ,co może się staćquestionmark.gif
corvus606
Działa idealnie! Dziękuję :-)

Co zaproponujesz w zamian e.keyCode==13? Przy czym wolałbym nie używać submit chyba, że będzie to absolutnie konieczne :-)
Niktoś
Może focusout() w jquery albo change()?
corvus606
Nie widzę tego. Dla mnie najbardziej odruchowe w takiej sytuacji jest potwierdzenie enterem, dlatego myślałem alternatywnie o submit.
Z tego co widzę to ani focusout ani change nie dają takiego samego efektu, ale jeszcze potestuje...

Faktycznie te numery zależą od tego jakiej klawiatury się używa?
Niktoś
Możesz zostawić te keycode-sprawdzałem i prawie wszystkie przeglądarki mają taki sam kod czyli 13, ale uważam ,że układ klawiatury także ma tutaj znaczenie.Jeśli strona ma być przeznaczona dla krajów z układem klawiatury "querty" to spokojnie możesz dać keycode.Poza tym jest mało krajów, które takiej klawiatury nie używają.
Dam także taki przykład przykład dlaczego układ jakiegokolwiek urządzenia ma znaczenie:
Co niektórzy powprowadzali blokadę w js na prawy przycisk myszy,by bronić się przed kopiowaniem tekstu zamieszczonym na stronie -zabezpieczenie to żadne bo wystarczyło zmienić układ klawiszy myszy na "leworęczny" i skopiować tekst.
corvus606
Muszę dopaść kogoś z klawiaturą AZERTY i sprawdzić...

Mam kolejny problem - chciałbym, żeby skrypt był wykonywany zarówno dla kliknięcia enter jak i dla kliknięcia na przycisk. Próbowałem tak:

  1. <form method="post" accept-charset='UTF-8'>
  2. <div class="question">
  3. <input type="text" name="An2"id="focus"/>
  4. <input type="button" name="submit" value="Submit me!" id="ANS2" />
  5. </form>
  6.  
  7. <div id="good" class="ans">
  8. <p>Dobrze</p>
  9. </div>
  10.  
  11. <div id="bad" class="ans">
  12. <p>Źle</p>
  13. </div>
  14. </div>
  15.  


[JAVASCRIPT] pobierz, plaintext
  1. $(document).keypress(function(e)
  2. {if(e.keyCode == 13)
  3. {var An2 = $(':#focus').val()
  4. if (An2 == Aaa2) {
  5. $("#good").show("fast");
  6. }
  7. else{
  8. $("#bad").show("fast");
  9. }
  10. return false
  11. };
  12. });
  13.  
  14. $("#ANS2").click(function () {
  15. var An2 = $(':#focus').val()
  16. if (An2 == Aaa2) {
  17. $("#good").show("fast");
  18. }
  19. else{
  20. $("#bad").show("fast");
  21. }
  22. return false
  23. );
  24.  
[JAVASCRIPT] pobierz, plaintext


Ale nie działa i do tego mam mroczne przeczucie że da się to zrobić znacznie bardziej elegancko.
Niktoś
<input type="text" name="An2"id="focus"/>-i znowu spacje pomiędzy atrybutami muszą być spacje bo mogą być jaja.
<input type="text" name="An2" id="focus"/>-poprawnie.

#-oznacza id
.-oznacza klase
:-selektory
Podałem wyżej jak powinno być a Ty swoje.
Nie $(':#focus').val() bo brakuje średnika na końcu i używasz selectorów z oznaczeniam id ,powinno być
$('#focus').val();
Posprawdzaj wszędzie bo masz więcej takich błędów.
Drobne błędy w js powodują , że nie wykona ci się cała funkcja.
by_ikar
IMO zrób to na submit() i niepotrzebnie nie kombinuj. Działanie będzie takie samo, ilość kodu i poświęconego nad nim czasu wielokrotnie mniejsza. W dokumentacji masz nawet przykład i demo: http://api.jquery.com/submit/#entry-examples działa zarówno po kliknięciu na inputa jak i po użyciu entera, głównie dlatego że jest to zdarzenie "podpięte" pod formularz i czy wyślesz enterem czy przyciskiem efekt jest ten sam...
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.