Dwa selecty i automatyczne wypełnianie - benny - 08-11-2010
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 ;/
RE: Dwa selecty i automatyczne wypełnianie - Kartofelek - 08-11-2010
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
RE: Dwa selecty i automatyczne wypełnianie - benny - 08-11-2010
updatemodels jest 
Poza tym już sobie poradziłem. Po prostu wrzuciłem do fill tą funkcją autoupdate
RE: Dwa selecty i automatyczne wypełnianie - Kartofelek - 08-11-2010
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
|