17. april 2007 - 20:36
Der er
6 kommentarer
Spring til næste felt
Hej. Jeg er igang med at lave en slags krydsord hvor man indtaster ét bogstav i et input. Når man har indtastet et bogstav i feltet springer den automatisk til næste felt og det kan jeg lave sådan: Kode <script type="text/javascript"> function inputTjek(felt) { if(document.captureEvents) { if(Event.KEYUP) { document.captureEvents(Event.KEYUP); } } document.onkeyup = tast; function tast(e) { if(!e) { if(window.event ) { e = window.event; } else { return; } } if(typeof(e.which) == 'number') { e = e.which; } else if(typeof(e.keyCode) == 'number') { e = e.keyCode; } else if(typeof(e.charCode) == 'number') { e = e.charCode; } else { return; } if (felt == 1) { var markeretFelt = document.form1.felt1.value; if ((e >= 65 && e <= 122) || (e >= 48 && e <= 57)) { if (markeretFelt.length == 1 && felt < 98) { document.form1.felt2.focus(); } } } } } </script> <form name="form1" method="post" action="" /> <input name="felt1" maxlength="1" style="width:30px;text-align:center;" onkeyup="java script:inputTjek(1);" /> - <input name="felt2" maxlength="1" style="width:30px;text-align:center;" onkeyup="java script:inputTjek(2);" /> </form> Men jeg har 98 felter og det betyder at jeg skal ligge dette ind i mit JavaScript 98 gange: Kode if (felt == 1) { var markeretFelt = document.form1.felt1.value; if ((e >= 65 && e <= 122) || (e >= 48 && e <= 57)) { if (markeretFelt.length == 1 && felt < 98) { document.form1.felt2.focus(); } } } Og så tænkte jeg om der måske ikke var en nemmere måde at gøre det på? På forhånd tak. - Simon
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
17. april 2007 - 22:13
#1
Her er et forslag, der virker i Opera v9.20, FireFox v2.0.03, Internet Explorer v6 SP2: <script type="text/JavaScript" language="JavaScript"> function inputTjek(felt) { num = parseInt(felt.name.replace("felt","")) num++; if (num > 98) num = 1; naestefelt = eval("document.form1.felt" + num); naestefelt.focus(); naestefelt.select(); } </script> Du skal lige rette din onkeyup til: onkeyup="inputTjek(this);" De kloge hoveder er velkommen til at kommentere/rette scriptet.. jeg frygter at eval-metoden er en fusker løsning.. :-) Jeg håber at du kan bruge det. - Svar
18. april 2007 - 01:58
#2
>>strandløve -- du kan vel ligesågodt bruge den form, der ligger rundt om feltet: <script type="text/javascript"> function inputTjek(felt){ num = parseInt(felt.name.replace("felt","")) num++; if (num > 98) num = 1; naestefelt = felt.form.elements["felt" + num]; naestefelt.focus(); naestefelt.select(); } </script> -- skal man over i (ægte) xhtml er der alligevel ingen af de benyttede metoder, der er gyldige !-)
18. april 2007 - 06:52
#3
Hej. Mange tak. Jeg ved ikke helt hvem jeg skal give pointne, men en løsning kunne være at roenving også lage et svar, så kunne I dele pointne.
18. april 2007 - 13:28
#4
Nej, den smule tilføjelse ændrer ikke på, at det var strandløven, der kom med konceppet !-)
18. april 2007 - 23:04
#5
roenving> Er det overhovedet ikke muligt, at lave en "dynamisk" reference i XHTML? Altså lige som min eval og din elements["felt" + num].. - Svar
18. april 2007 - 23:22
#6
De pusler med noget, der hedder XFORMS, som jeg simpelthen ikke har kigget på ... -- ellers kan man jo altid bruge den xml-kompatible .getElementById("noget").setAttribute("value","En værdi"); -- men da dynamisk aflæsning af attributter ikke understøttes direkte med xml-syntaks, skal vi altså vente på de der xforms !-)
Vi tilbyder markedets bedste kurser inden for webudvikling