Gå til innhold

Sende variabel inn i script


Anbefalte innlegg

Jeg sliter litt med et script. Jeg tenkte å bestemme hvilken formfield det skulle fokuseres på ved å sende navnet på neste field til javascriptet, men det funker jo dårlig. Om jeg kjører scriptet uten å sende fieldname, så sier alerten "Undefined" - Her skulle den jo sagt "field1". Om jeg kjører scriptet via onChange så sier alerten "[Object]" når den skulle sagt "field3" f eks...

Hva kjør jeg feil ?

<script language="JavaScript">
function reCalc(formField){
if(formField == ""){
var focusOn = "field1";
}
else{focusOn = formField};
alert(focusOn);

// masse kalkulasjoner

window.document.form.focusField.focus();
window.document.form.focusField.select();
}
</script>

<form name="form">
<input name="field1" type="text" onChange="java script:reCalc(field3)" tabindex="10">
<input name="field2" type="text" onChange="java script:reCalc(field1)" tabindex="15">
<input name="field3" type="text" onChange="java script:reCalc(field2)" tabindex="20">
</form>

Endret av RulleRimfrost
Lenke til kommentar
Videoannonse
Annonse

Er ingen ekspert på javascript og jeg får ikke testet dette. Men jeg mener du må sende feltnavnet inn som tekst og bruke document.getElementById('feltetditt'); for å hente ut riktig variabel som du kan hente ut .value fra osv...

 

Forøvrig finnes det flere gode scripts som gjør noe i den gaten du er på jakt etter:

http://javascript.internet.com/forms/tab-key-emulation.html

http://javascript.internet.com/forms/auto-tab.html

Lenke til kommentar

<html>
<head>
<script language="JavaScript">
function reCalc(formField){
if(formField == null){
var focusOn = form['field1'];
}
else{focusOn = formField};

// masse kalkulasjoner

formField.focus();
formField.select();
}
</script>
</head>
<body>
<form name="form">
<input name="field1" type="text" onChange="java script:reCalc(form['field3'])" tabindex="10">
<input name="field2" type="text" onChange="java script:reCalc(form['field1'])" tabindex="15">
<input name="field3" type="text" onChange="java script:reCalc(form['field2'])" tabindex="20">
</form>
</body>
</html>

 

Er neimen ikke sikker på hvordan du har tenkt, men jeg har iallefall ryddet unna åpenbare feil og mangler, så du kanskje kommer deg videre.

 

Som du ser, når man skal referere til et felt, blir det på formen:

 

<formnavn>['<feltnavn>']

 

Men husk at man da refererer til selve feltet, og ikke verdien i feltet. Skal man ha verdien blir det slik:

 

<formnavn>['<feltnavn>'].value

 

 

Hilsen Werner

Endret av wernie
Lenke til kommentar

Takker. Skal få testet dette.

Det jeg prøver på er å overstyre tabindex i html-koden. Skriver mitt første javascript, og det irriterer meg at focus går til adresselinjen når jeg tab'er ut av siste feltet i skjemaet. Tenkte jeg da bare kunne sende navnet på neste felt inn i scriptet, for så å la skriptet flytte fokus til neste felt i skjemaet... Nybegynner-logikk.

Mulig veien å gå er å fange keycode som i eksemplet over. Tenkte først det ville bli sluggish siden kalkulasjonene kan inneholde store iterasjoner, men det slår meg at jeg trenger jo selvfølgelig ikke fyre av disse før jeg trykker en knapp som faktisk flytter fokus ut av feltet.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...