Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zależność wielu pól input i select
hubson87
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 8
Dołączył: 9.02.2011
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam mój problem został już po częsci rozwiązany tutaj.


Jeżeli komuś się nie chce czytać to:
Potrzebowałem zrobić pole input zależne od wartości selecta pobierającego opcję z bazy. Kolega jaslanin podał mi taki kod.

Cytat(jaslanin @ 30.03.2011, 08:50:50 ) *
index.php:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  6. <title>Untitled Document</title>
  7. </head>
  8.  
  9. <body>
  10. <script type="text/javascript">
  11. $(document).ready(function() {
  12.  
  13. $('select.selectField').change(function() {
  14. $.getJSON('ajax.php', {option: $(this).val()}, function(data) {
  15. $('input.inputField').val(data.inputValue);
  16.  
  17. });
  18. });
  19.  
  20. });
  21. </script>
  22.  
  23.  
  24. <select class="selectField">
  25. <option>Wybierz</option>
  26. <option value="opcja 1">opcja 1</option>
  27. <option value="opcja 2">opcja 2</option>
  28. <option value="opcja 3">opcja 3</option>
  29. </select>
  30.  
  31. <input style="width: 300px;" class="inputField" type="text" />
  32.  
  33. </body>
  34. </html>


ajax.php :

  1. <?
  2.  
  3. $option = $_GET['option'];
  4.  
  5. $a = new stdClass();
  6. $a->inputValue = "selected option: $option";
  7.  
  8. echo json_encode($a);
  9.  
  10. ?>


Jednak problem w tym, że mam formularz generowany dynamicznie. I teraz potrzebowałbym, żeby ten kod mógł działać w ten sposób, że przy wyborze danego selecta generowany jest dany input, tzn.
1. Pobieram dana z selecta <select name="sel[x]">
2. Odpowiednim zapytaniem wyciagam potrzebna dana w pliku ajax.php
3.Przesyłam ją z powrotem do formularza i wstawiam w input <input name="inp[x]">. Nie znam się za bardzo na js więc będę wdzięczny za każdą pomoc


Go to the top of the page
+Quote Post
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


Ostatnio o mnie kiepsko z czytaniem ze zrozumieniem, albo u innych z pisaniem do zrozumienia. W każdym razie, czy nie chodzi Ci czasem po prostu o to by ustawić atrybut name dla pola input w zależności od pola select?

name dla pola input możesz ustawić przez: http://api.jquery.com/attr/

przesyłanie kolejnych danych myślę można wykonać analogicznie jak w moim przykładzie który cytujesz.

Podejrzewam chociaż nie jest to tutaj wyraźnie napisane że możesz chcieć by wartość atrybutu pola name pochodziła z atrybutu value pola option.

w takim wypadku wartość pola select można uzyskać używając:

http://api.jquery.com/val/
http://api.jquery.com/change/

tę wartość później wykorzystujesz jako wartość atrybutu name dla pola input, używając do tego funkcji attr

Ten post edytował jaslanin 2.04.2011, 17:33:31
Go to the top of the page
+Quote Post
hubson87
post
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 8
Dołączył: 9.02.2011
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Dobra temat nadal aktualny jeśli ktokolwiek tu zagląda ;d

Zoptymalizowałem kod funkcji do takiej postaci i wszystko działa pieknie dopóki formularz tworzony jest statycznie. Problem pojawia się przy tworzeniu formularza w sposób dynamiczny przy użyciu jquery.
I teraz pytanie jak w jquery wyciągnąć indeks danego elemntu ale przy dynamicznym formularzu? Poniżej działająca wersja dla wersji statycznej.

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2.  
  3.  
  4. $(document).ready(function() {
  5.  
  6. $('select.sf').change(function() {
  7.  
  8. var z = $("select.sf").index(this);
  9.  
  10.  
  11. $.getJSON('ajax.php', {option: $(this).val()}, function(data) {
  12. $("[name^=jed]").eq(z).val(data.inputValue);
  13. alert(z);
  14. });
  15.  
  16. });
  17. });
  18.  
  19. </script>
[JAVASCRIPT] pobierz, plaintext


Ten post edytował hubson87 4.04.2011, 18:27:37
Go to the top of the page
+Quote Post
jaslanin
post
Post #4





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


myślę że to pomoże: http://api.jquery.com/live/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 04:12