Avatar billede kakadue Nybegynder
04. august 2003 - 00:33 Der er 16 kommentarer og
1 løsning

Ændre property for flere input's.

Hej! :)

Jeg sidder lige og laver en side, hvor man skal kunne vælge et tal mellem 1 og 5 fra en <select> og derefter skal det samme antal <input>'s man har valgt gå fra readonly state til ikke-readonly. Det eneste jeg mangler er sådan set den loop der skal køre input-boxene igennem.

Det ser ud som følger:

<script>
function ChangeBoX(oSelect) {
var her = oSelect.options[oSelect.selectedIndex].value;

var i = 1;

while (i < her+1) {
document.f1.g + i + .readonly=this.checked;
i++;
}

<form name=f1>
<select name=s1 onchange="ChangeBoX(this);">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select><br>
<input type=text name=g1 style="background: #EFEFEF;" readonly><br>
<input type=text name=g2 style="background: #EFEFEF;" readonly><br>
<input type=text name=g3 style="background: #EFEFEF;" readonly><br>
<input type=text name=g4 style="background: #EFEFEF;" readonly><br>
<input type=text name=g5 style="background: #EFEFEF;" readonly><br>
</form>

--

Linjen i loop'en virker selvfølgelig ikke, hvilket sikkert er logisk nok, men hvad hulen gør man så?

På forhånd tak! :)
Avatar billede kakadue Nybegynder
04. august 2003 - 00:34 #1
Og ja, den manglende </script> ovenover er til stede i min kode ;)
Avatar billede squashguy Nybegynder
04. august 2003 - 00:54 #2
1)
du mangler at afslutte din while.

2)
hvis her = 2, bliver her+1 = 21 (her opfattes som en streng)

3)
document.f1.g + i + .readonly=  , skal nok skrives som
document.f1["g"+i].readOnly=
Avatar billede roenving Novice
04. august 2003 - 01:01 #3
Foreløbigt har jeg arbejdet mig hen til dette, som virker, _bortset_ fra at den der readonly åbenbart ikke vil blive af-readonly'et ?-)

function ChangeBoX(oSelect) {
var her = oSelect.options[oSelect.selectedIndex].value;
for (i=1;+her+1>i;i++ ) {
elm = 'g'+i;
document.f1.elements[elm].readonly = false;
}
}
Avatar billede roenving Novice
04. august 2003 - 01:03 #4
Men med disabled i stedet for readonly virker det !-)

-- og også i Mozilla !o]

<script>
function ChangeBoX(oSelect) {
var her = oSelect.options[oSelect.selectedIndex].value;
for (i=1;+her+1>i;i++ ) {
elm = 'g'+i;
document.f1.elements[elm].disabled = false;
}
}
</script>

<form name=f1>
<select name=s1 onchange="ChangeBoX(this);">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select><br>
<input type=text name=g1 style="background: #EFEFEF;" disabled><br>
<input type=text name=g2 style="background: #EFEFEF;" disabled><br>
<input type=text name=g3 style="background: #EFEFEF;" disabled><br>
<input type=text name=g4 style="background: #EFEFEF;" disabled><br>
<input type=text name=g5 style="background: #EFEFEF;" disabled><br>
</form>
Avatar billede squashguy Nybegynder
04. august 2003 - 01:04 #5
readonly != readOnly
:o)
Avatar billede kakadue Nybegynder
04. august 2003 - 01:04 #6
1) var endnu en fejl i det ovenstående eksempel :)

Vil det fikse 2) at skrive var her = Number(oSelect.options[oSelect.selectedIndex].value); istedet?

Mener du document.f1.["g"+i].readOnly= (Manglende punktum efter f1)? Det virker dog ikke.
Avatar billede squashguy Nybegynder
04. august 2003 - 01:09 #7
roenving har vist lavet noget som virker.

og den der med manglende punktum efter f1 skulle altså virke :)
Avatar billede squashguy Nybegynder
04. august 2003 - 01:10 #8
2eren er også løst: smid et + ind foran
Avatar billede kakadue Nybegynder
04. august 2003 - 01:10 #9
Ja, minsandten om det ikke virker med disabled :) Det var dog interessant. Hvad er forskellen egentlig på de to, udover at boksen bliver "grayed" ved disabled?
Avatar billede roenving Novice
04. august 2003 - 01:12 #10
>>squashguy

Du må ikke udføre en konkatenering inde i en indexering -- derfor min omvej ...

Og det lille trick med at sætte et + foran en tekstværdi som er et tal er rigeligt for javascript til at caste værdien ...


-- og den burde melde fejl, hvis det punktum var der !-)
Avatar billede squashguy Nybegynder
04. august 2003 - 01:14 #11
jeg har lige testet med mit punktum, det virker uden fejlmeddelser.
Avatar billede kakadue Nybegynder
04. august 2003 - 01:17 #12
Nå, jeg sidder bare her og fester over at det virker.. tak for hjælpen guys.. kommer der nogen svar så jeg kan uddele point eller noget? :)
Avatar billede squashguy Nybegynder
04. august 2003 - 01:21 #13
hvad er der egentlig ulovligt ved

document.something["id"+i].blah

det har jeg da oftet set, og det virker (i hvert fald under internet explorer)
Avatar billede roenving Novice
04. august 2003 - 01:35 #14
-- meget præcist med den sidste kommentar ...

i alle de andre browsere vil hverken document.something eller f.eks. document.forms[a+4] virke ...
Avatar billede roenving Novice
04. august 2003 - 02:02 #15
-- nå, ja, velbekomme '-)
Avatar billede roenving Novice
04. august 2003 - 16:13 #16
-- og tak for points ;~}
Avatar billede kakadue Nybegynder
05. august 2003 - 16:26 #17
Ja, det var skam fortjent :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester