• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ustawianie select option na podstawie linku

VPS Starter Arubacloud
+1 głos
181 wizyt
pytanie zadane 20 czerwca 2021 w HTML i CSS przez Zawoj11 Użytkownik (850 p.)

Witam na podstawie przykładu pokażę z czym ostatnio się borykam.

Otóż chciałbym stworzyć coś takiego, i nie jestem pewny do końca jak to zrobić.


Więc tak:
Mam np stronę główną, gdzie są linki. I one przenoszą nas na podstronę z formularzem kontaktowym. Ale dodatkowo zależnie który link klikniemy to ustawiam nam odpowiednią opcję w znaczniku <select>

Zauważyłem że na wielu stronach jest tak że ten link wygląda jakoś tak:
jakis/link/do/kontaktu/?pets=dog

Strona Główna:
 

<section>
    <a href="link/do/konaktu/?pets=dog"></a> <- po przeniesieniu ustawi opcję dog
    <a href="link/do/konaktu/?pets=cat"></a> <- po przeniesieniu ustawi opcję cat
    <a href="link/do/konaktu/?pets=hamster"></a> <- po przeniesieniu ustawi opcję hamster
</section>

Podstrona kontaktowa
 

<section class="form">
<label for="pet-select">Choose a pet:</label>

<select name="pets" id="pet-select">
    <option value="">--Please choose an option--</option>
    <option value="dog">Dog</option>
    <option value="cat">Cat</option>
    <option value="hamster">Hamster</option>
    <option value="parrot">Parrot</option>
    <option value="spider">Spider</option>
    <option value="goldfish">Goldfish</option>
</select>
</section>

 

 

3 odpowiedzi

0 głosów
odpowiedź 21 czerwca 2021 przez VBService Ekspert (255,840 p.)
wybrane 21 czerwca 2021 przez Zawoj11
 
Najlepsza

Jeśli z jakiś powodów nie możesz użyć jakiegokolwiek języka "backend-owego" (np.: php jak wspomniał @SzkolnyAdmin), zawsze możesz użyć window.location.search do przenoszenia "danych" między stronami.

 

Przykład użycia window.location.search

glowna.html

<section>
  <a href="kontakt.html?pets=dog">dog</a> <!-- po przeniesieniu ustawi opcję dog -->
  <a href="kontakt.html?pets=cat">cat</a> <!-- po przeniesieniu ustawi opcję cat -->
  <a href="kontakt.html?pets=hamster">hamster</a> <!-- po przeniesieniu ustawi opcję hamster -->
  <a href="kontakt.html?pets=goldfish">goldfish</a>
</section>

kontakt.html

<body>
  <section class="form">
    <label for="pet-select">Choose a pet:</label>
 
    <select name="pets" id="pet-select">
      <option value="">--Please choose an option--</option>
      <option value="dog">Dog</option>
      <option value="cat">Cat</option>
      <option value="hamster">Hamster</option>
      <option value="parrot">Parrot</option>
      <option value="spider">Spider</option>
      <option value="goldfish">Goldfish</option>
    </select>
  </section>
</body>

<script>
  document.addEventListener('DOMContentLoaded', () => {
    if (window.location.search.split('?').length > 1) {
      const value_from_href = window.location.search.split('?')[1].split('=')[1];
      selectingOption(value_from_href);
    }
  });

  function selectingOption(option_to_choose) {
    const select_pets = document.querySelectorAll('#pet-select option');
    select_pets.forEach((option_) => {
      if (option_.value.toLowerCase() == option_to_choose.toLowerCase()) {
        option_.setAttribute('selected', 'selected');
      }
    });
  }   
</script>

 

działa także z <optgroup>

kontakt.html

<body>
  <section class="form">
    <label for="pet-select">Choose a pet:</label>
 
    <select name="pets" id="pet-select">
      <option value="">--Please choose an option--</option>
      <optgroup label="Mammals">
        <option value="dog">Dog</option>
        <option value="cat">Cat</option>
        <option value="hamster">Hamster</option>
      </optgroup>
      <optgroup label="Birds">
        <option value="parrot">Parrot</option>
      </optgroup>
      <optgroup label="Arachnids">
        <option value="spider">Spider</option>
      </optgroup>
      <optgroup label="Fishes">
        <option value="goldfish">Goldfish</option>
      </optgroup>
    </select>
  </section>
</body>

<script>
  document.addEventListener('DOMContentLoaded', () => {
    if (window.location.search.split('?').length > 1) {
      const value_from_href = window.location.search.split('?')[1].split('=')[1];
      selectingOption(value_from_href);
    }
  });

  function selectingOption(option_to_choose) {
    const select_pets = document.querySelectorAll('#pet-select option');
    select_pets.forEach((option_) => {
      if (option_.value.toLowerCase() == option_to_choose.toLowerCase()) {
        option_.setAttribute('selected', 'selected');
      }
    });
  }   
</script>

 

+2 głosów
odpowiedź 21 czerwca 2021 przez pablop76 VIP (123,340 p.)

Alternatywa jest użycie Storage. Nie trzeba generować kilku linków tylko można użyć select również w formularzu pierwszego wyboru.

komentarz 21 czerwca 2021 przez Zawoj11 Użytkownik (850 p.)
Dzięki, może być to sprytny sposób.
+1 głos
odpowiedź 20 czerwca 2021 przez SzkolnyAdmin Szeryf (88,920 p.)


Potrzebny ci będzie jeszcze PHP działający na serwerze. Poczytaj o metodzie GET, np. tu: https://phpkurs.pl/przekazywanie-danych/

komentarz 21 czerwca 2021 przez Zawoj11 Użytkownik (850 p.)
Dzięki, przyglądnę się temu.

Podobne pytania

0 głosów
0 odpowiedzi 333 wizyt
0 głosów
1 odpowiedź 441 wizyt
pytanie zadane 26 lutego 2023 w PHP przez gatka84 Bywalec (2,150 p.)
0 głosów
2 odpowiedzi 459 wizyt
pytanie zadane 31 lipca 2019 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)

93,022 zapytań

141,986 odpowiedzi

321,288 komentarzy

62,367 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...