[JavaScript]zmiana powiązania w skrypcie js |
[JavaScript]zmiana powiązania w skrypcie js |
9.06.2019, 12:23:32
Post
#1
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) |
Witam, mam pytanie odnośnie przerobienia skryptu js. Obecnie powiązanie option odnosi się do "value", jak przerobic skrypt żeby powiązanie odnosiło się do "id" lub "rel" ?
Ten post edytował shreker 9.06.2019, 12:55:21 |
|
|
9.06.2019, 12:52:00
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Zmienić "value" na "id".
id musi być unikalne w ramach dokumentu. -------------------- |
|
|
9.06.2019, 12:54:44
Post
#3
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) |
a czy da się nap powiązań według "rel" ?
|
|
|
9.06.2019, 13:01:54
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Najlepiej użyć atrybutu data-*, np. data-id="1".
-------------------- |
|
|
9.06.2019, 13:11:05
Post
#5
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) |
zmieniłem na :
<div> <select class="form-control" name="select1" id="select1"> <option data-id="1" value="0">wybierz ...</option> <option data-id="2" value="1">Fruit</option> <option data-id="3" value="2">Animal</option> <option data-id="4" value="3">Bird</option> <option data-id="5" value="4">Car</option> </select> </div> <div> <select class="form-control" name="select2" id="select2"> <option data-id="1" value="0">wybierz ...</option> <option data-id="2" value="1">Banana</option> <option data-id="2" value="1">Apple</option> <option data-id="2" value="1">Orange</option> <option data-id="3" value="2">Wolf</option> <option data-id="3" value="2">Fox</option> <option data-id="3" value="2">Bear</option> <option data-id="4" value="3">Eagle</option> <option data-id="4" value="3">Hawk</option> <option data-id="5" value="4">BWM<option> </select> </div> <script type="text/javascript"> var $select1 = $('#select1'), $select2 = $('#select2'), $options = $select2.find('option'); $select1.on('change', function() { $select2.html($options.filter('[data-id="' + data-id + '"]')); }).trigger('change'); </script> ale nie działa, co musze zmieić w js, niestety nie mam pojęcia o js ? Ten post edytował shreker 9.06.2019, 13:11:45 |
|
|
9.06.2019, 13:32:19
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
-------------------- |
|
|
9.06.2019, 13:49:20
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Zostawiasz this.value
-------------------- |
|
|
9.06.2019, 19:28:54
Post
#8
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) |
super działa z przypisaniem zależności do "value" z select1, ale czy da się przypisać do id zamiast do value ?
Ten post edytował shreker 9.06.2019, 19:29:54 |
|
|
9.06.2019, 19:50:17
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Podałem Ci przykład jak pobrać wartość z atrybutu data-id.
Value niekoniecznie jest dobrym pomysłem, bo kiedy będziesz przesyłał wartość takiego select, to nie będziesz wiedział, który z trzech owoców wybrał użytkownik. Wartości value powinny być w takim przypadku również unikalne, przynajmniej w ramach grupy. Ten post edytował trueblue 9.06.2019, 19:51:16 -------------------- |
|
|
9.06.2019, 20:07:12
Post
#10
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) |
rozumiem to co napisałeś odnośnie, że pobieranie atrybutu "value" nie jest dobrym pomysłem dlatego chciałem zrobić tak żeby w select1 przypisane były opcje po id (które są unikalne tak jak napisałeś). Ale w coś jest nie tak w kodzie javascript bo opcje nie są pobierane (pusty select).
|
|
|
9.06.2019, 20:12:31
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Proponuję, abyś spojrzał jeszcze raz w link, który podałem wyżej.
Unikalność id i unikalność wartości value, to dwie różne kwestie. Póki co rozwiązałeś pierwszą, i dobrze. Jeśli chodzi o drugą, to na razie możesz pozostawić tak jak jest, ale za jakiś czas sam zorientujesz się, że wartości w atrybucie value dobrze, aby również były unikalne. -------------------- |
|
|
9.06.2019, 20:16:12
Post
#12
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) |
czyli nie mogę powiązać opcji z selecta 2 z opcjami selecta 1 za pomocą id a nie value z selecta 1 ?
Chodzi o to że przy powiązaniu do value wszystko działą, ale jak zmienić w funkcji żeby powiązanie było do id a nie do value ? Ten post edytował shreker 9.06.2019, 20:18:43 |
|
|
9.06.2019, 20:25:51
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Oj, przepraszam. Nie spojrzałem dokładnie w kod.
Porpozycja vikinga jest ok - możesz się posiłkować value (bo pobierasz tą wartość z pierwszego select). Rozwiązanie z użyciem data-id jest jak najbardziej prawidłowe. A więc całość powinna u Ciebie działać: https://jsfiddle.net/en4y78wr/ P.S. Unikalność value w drugim select nadal warto wdrożyć. Ten post edytował trueblue 9.06.2019, 20:26:03 -------------------- |
|
|
9.06.2019, 20:31:25
Post
#14
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) |
tak, ta wersja działą, do tego już doszedłem, ale nie zrozumieliśmy się dalej. bo wersja którą dałeś pobiera opcja na podstawie value z select1, a mi chodziło o to żeby pobierało opcje po id z select1, czy raczej według zamieszczonego przez ciebie kodu po data-id z select1
Ten post edytował shreker 9.06.2019, 20:34:12 |
|
|
9.06.2019, 20:37:11
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Wtedy tak:
lub:
Ale lepiej tam też użyć atrybutów data-id, a nie id. -------------------- |
|
|
9.06.2019, 20:40:16
Post
#16
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 21.05.2008 Ostrzeżenie: (0%) |
Super, dzięki serdeczne za pomoc
Ten post edytował shreker 9.06.2019, 20:43:10 |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 10:33 |