Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: select option podmiana
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
martex
Witam
próbuję zrobić mały formularz z autami
mam 2 selekty marka i model
domyslnie model jest wyłączony po wybraniu marki włącza sie model
pytanie moje jak dodać nową listę do id model
np. audi
to w sliscie bedzie a3 a4 a6 q7
bmw to w liscie bedzie 3 5 6 7 itp itd

udało mi się coś takiego zrobić i neiwiem jak te tablice dodać do w zależnosci od wybranej marki listy option
  1. $(document).ready(function(){
  2. $('#model').attr('disabled', 'disabled');
  3. //alert('omg');
  4.  
  5. var audii = ['a1','a2','a3','a4','q7'] ;
  6. var bmww = ['3','5','6','7'];
  7.  
  8. function marka(event){
  9. var zmienna = document.getElementById('contactform').marka.value;
  10. //var asdf = (obiektSelect.options[obiektSelect.selectedIndex].value );
  11. //alert(zmienna);
  12. return zmienna;
  13.  
  14. };
  15.  
  16. $('#marka').change(function(){
  17. switch(marka()) {
  18. case 'audi':
  19. alert('audi');
  20. $('#model').removeAttr('disabled');
  21.  
  22. break;
  23. case 'bmw':
  24. alert('bmw');
  25. $('#model').removeAttr('disabled');
  26. break;
  27. default:
  28.  
  29. };
  30.  
  31. });
  32.  
  33. });
aniolekx
w niektórych miejscach użyłem polskich nazw zmiennych (czego z reguły nie robię), ale zdecydowałem ze w tym przypadku będzie czytelniej.
sprawdziłem na jQuery w wersji 2.1.1

  1. $(function(){
  2. var marki = [];
  3. marki['audi'] = ['a1','a2','a3','a4','q7'];
  4. marki['bmw'] = ['3','5','6','7'];
  5.  
  6. function insert_option(select, wybrany, opcje)
  7. {
  8. select.find('option').remove();
  9. select.append($('<option>', { value : '' }).text(''));
  10.  
  11. if (wybrany in opcje) {
  12. select.removeAttr('disabled');
  13.  
  14. for (i in opcje[wybrany]) {
  15. var text= opcje[wybrany][i];
  16. select.append($('<option>', { value : text }).text(text));
  17. }
  18.  
  19. } else {
  20. select.prop('disabled', true);
  21. }
  22.  
  23. }
  24.  
  25. $("#marka").change(function(){
  26. var select = $('#model');
  27. var wybrany = $(this).find("option:selected").val();
  28. insert_option(select, wybrany, marki);
  29. });
  30.  
  31. });



sprawdziłem na tym kawałku HTML'a:

  1. <form id="contractform"></form>
  2. <select id="marka">
  3. <option value=""></option>
  4. <option value="bmw">BMW</option>
  5. <option value="audi">Audi</option>
  6. </select>
  7.  
  8. <select id="model" disabled>
  9. </select>
  10. </form>
martex
http://jsfiddle.net/8yj0uj2t/

coś nie chce mi to działać
aniolekx
Masz literowke w nazwie funkcji, zle to wkleiles, bo masz dwa razy funkcie ktora czeka az document będzie gotowy.
martex
http://jsfiddle.net/8yj0uj2t/1/
nie zauważyłem tej literówki
dzięki działa

a jeszcze mam pytanko jak stworzyć element <br> który mógłbym dodawać w kilku miejscach questionmark.gif

var mybr = document.createElement('br');

dodaje to do inputów tak :
this.box_section1.appendChild(mybr);

ale mogę tego użyć tylko raz inaczej wyskakuje błąd że mybr jest już używane

http://jsfiddle.net/q4zayqpe/17/

przy divie na stałe (display:none) było ok
teraz mam problemy z dodaniem option do select
aniolekx
w zasadzie to o co pytasz masz w tym kodzie który ci podałem, tam tez tworze wiele razy ten sam element (option) i dodaje go do selecta, sprawdź w dokumentacji jQuery funkcje których nie znasz.
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.