Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dwa selecty i automatyczne wypełnianie
#1
Witam...

Stworzyłem sobie dwa selecty, które po wybraniu jednej opcji, automatycznie uzupełniają drugiego selecta w dostępne opcje. Pierwszy jest z marką samochodu, drugi z modelem. Wszystko działa ładnie w momencie kiedy wybieram pozycję za pomocą myszki. Problem następuje wówczas kiedy uzupełniam te pola za pomocą selecta z kodem samochodu (8 pół select, każdy z opcjami od 0 do 9, później parsowany na jedną wartość czyli liczbę 8 cyfrową). Jak to wygląda.. wybieram sobie wartość np. 02010600 i automatycznie uzupełnia mi markę i model, co odpowiada np. Alfa romeo 33. Problem polega na tym, że markę wybierze, ale za ma problem z modelem...
Może wrzucę kod dla objaśnienia...

Automatyczny update pól po wybraniu kodu:
Kod:
    $(document).ready(function(){
    
    $('#mmcode_0,#mmcode_1,#mmcode_2,#mmcode_3,#mmcode_4,#mmcode_5,#mmcode_6,#mmcode_7').change(function(){
        var m1 = $('#mmcode_0').attr("value");
        var m2 = $('#mmcode_1').attr("value");
        var m3 = $('#mmcode_2').attr("value");
        var m4 = $('#mmcode_3').attr("value");
        var m5 = $('#mmcode_4').attr("value");
        var m6 = $('#mmcode_5').attr("value");
        var m7 = $('#mmcode_6').attr("value");
        var m8 = $('#mmcode_7').attr("value");
        $('[name=MmCode]').attr("value", parseInt(m1+m2+m3+m4+m5+m6+m7+m8,"10"));
        fill();
        });
    
    function fill()
    {
        var mmcode = $('[name=MmCode]').attr("value");
        var i = 0;
        for (i=0; i <= car.length; i++) {
            if (mmcode == car[i][0]) {
                $('[name=MakeModel[0]]').attr("value", car[i][1]);
                $('[name=MakeModel[1]]').attr("value", car[i][2]);
                $('[name=Transmission]').attr("value", car[i][3]);
                $('[name=Engine]').attr("value", car[i][4]);
                $('[name=DriveType]').attr("value", car[i][5]);
                $('[name=Doors]').attr("value", car[i][6]);
                $('[name=FuelType]').attr("value", car[i][7]);
                $('[name=Power]').attr("value", car[i][8]);
                $('[id=ps]').attr("value", car[i][9]);
                $('[name=BodyStyle]').attr("value", car[i][10]);
            }    
        }
    }
    });

Pola z marką i modelem:
Kod:
<select id="MakeModel[0]" name="MakeModel[0]" onChange="updatemodels(this.selectedIndex)">
        <option selected>Any make</option>
        <option value="2453">AC</option>
        <option value="2459">Acura</option>
        <option value="2461">Alfa Romeo</option>
</select>

<select id="MakeModel[1]" name="MakeModel[1]">
<option value="0">Any model</option>
</select>


<script type="text/javascript">

var mmcode_0=document.getElementById("mmcode_0");
var mmcode_1=document.getElementById("mmcode_1");
var mmcode_2=document.getElementById("mmcode_2");
var mmcode=parseInt(mmcode_0+mmcode_1+mmcode_2,"10");

var makeslist=document.getElementById("MakeModel[0]")
var modelslist=document.getElementById("MakeModel[1]")

var models=new Array()
models[0]="Any model"
models[1]=["Any model|0", "212|2454", "Ace|2455", "Aceca|2456", "Cobra|2457", "Superblower|2458"]
models[2]=["Any model|0", "MDX|24600", "NSX|24610", "RL|24611", "RSX|24612", "TL|24613", "TSX|24614"]
models[3]=["Any model|0", "145|2462", "146|2463", "147|2464", "155|2465", "156|2466", "159|2467", "164|2468", "166|2469", "33 Series|2470", "75|2471", "90|2472", "Alfasud|2473", "Alfetta|2474", "Arna|2475", "Brera|2476", "GT|2477", "GTV|2478", "Giulia|2479", "Giulietta|2480", "MiTo|2481", "SZ|2482", "Spider|2483", "Sprint|2484"]

function updatemodels(selectedmodelgroup){
modelslist.options.length=0
if (selectedmodelgroup>0){
for (i=0; i<models[selectedmodelgroup].length; i++)
modelslist.options[modelslist.options.length]=new Option(models[selectedmodelgroup][i].split("|")[0], models[selectedmodelgroup][i].split("|")[1])
}
}

</script>
Problem jest w tym, że chyba ten onchange reguje tylko na przycisk myszy ;/
Odpowiedz
#2
nie nie reaguje. Masz poplątany kod. Raz używasz czystego js (onChange wstawione inline - zle). Drugi raz uzywasz jquery. Poza tym to nie jest pełny kod, bo np updatemodels nie ma Wink
Odpowiedz
#3
updatemodels jest Smile

Poza tym już sobie poradziłem. Po prostu wrzuciłem do fill tą funkcją autoupdate Smile
Odpowiedz
#4
Gdybym był moderatorem, pewnie usuwał bym takie tematy. Nie dość, że podany kod był błędny (bo tej funkcji nie było), to temat do niczego nie prowadzi, a tylko powoduje bałagan na forum Wink
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Automatyczne dopasowanie strony do rozdzielczości ekranu pingwin72 1 2,479 19-12-2011, 02:48
Ostatni post: Kartofelek
  Automatyczne otwieranie pliku paul43 4 3,617 02-11-2011, 14:14
Ostatni post: Kartofelek

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl