• 19.05.2024, 16:54
  • Register
  • Login
  • You are not logged in.

 

Dear visitor, welcome to Aqua Computer Forum. If this is your first visit here, please read the Help. It explains how this page works. You must be registered before you can use all the page's features. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

AngryC

Full Member

html / javascript Frage

Monday, March 28th 2005, 8:50pm

Hallo,
ich programmiere grade was und brauche nen tipp wie ich folgendes machen kann:
habe 3 datumseingabefelder (eins für tag mit 2 stellen, eins für monat 2 stellen und eins fürs jahr mit 4 stellen).
nun brauch ich ein javascipt, das den cursor nach eingabe der 2. ziffer vom 1. in das 2. feld "schiebt" ( und vom 2. ins 3.), damit man nicht selber reinklicken oder TAB drücken muss.

kennt jmd sowas?

Re: html / javascript Frage

Monday, March 28th 2005, 9:59pm

du machst nen onchange-handler auf das erste feld und lässt eine methode überprüfen, ob die zweite ziffer eingegeben ist (z.b. ob der string zwei zweichen lang ist) und dementsprechnd rufst du vom nächsten feld .focus() auf.

AngryC

Full Member

Re: html / javascript Frage

Monday, March 28th 2005, 10:08pm

vielen dank.

function checkValueLength(t, nextname) {
if (t.value.length =2) { t.form.nextname.focus(); }
}

<input name="vd_day" type="text" onChange="checkValueLength(this, 'vd_month')" value="" size="2" maxlength="2">


habs nun so, funktioniert aber leider noch nicht.

Re: html / javascript Frage

Monday, March 28th 2005, 10:42pm

der vergleichsoperator müsste == und nicht = (zuweisung) sein.

um zudem xhtml-kompatibel zu bleiben fehlt am ende des tags ein slash und das onchange-attribut wird komplett lowercase geschrieben.

zudem übergibst du nur nen string, das klappt wohl nicht. entweder du übergibst das objekt oder lässt den zweiten parameter weg und rufst es direkt auf. das objekt solltest du über this.form.vd_month oder forms[0].vd_month oder meinformularname.vd_month erreichen.

AngryC

Full Member

Re: html / javascript Frage

Monday, March 28th 2005, 11:03pm

function checkValueLength(t, nextname) {
if (t.value.length==2) { this.form.getElementByName(nextname).focus(); }
}

ich will halt die funktion für unterschiedliche namen verwenden, deshalb kann ich nich vd_month fest codieren...

aber warum geht das so nicht?

Re: html / javascript Frage

Monday, March 28th 2005, 11:15pm

bin zu faul es auszuprobieren, also mal ein paar fragen:

- wird die funktion aufgerufen?
- wird der if-block ausgeführt?

probier mal:
- document.getElementByName() statt this.form...
- übergebe this.value anstatt this an die funktion
- ; hinter dem funktionsaufruf in onchange
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

AngryC

Full Member

Re: html / javascript Frage

Monday, March 28th 2005, 11:25pm

das onChange event scheint erst aufzutreten wenn ich das textfield verlasse und nicht wenn man da was eingibt! komisch...

also wenn ich das feld verlasse wird meine function ausgeführt und auch der code im if-statement.

Re: html / javascript Frage

Monday, March 28th 2005, 11:32pm

klar, eigentlich auch logisch.

also nimm mal onkeydown
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

AngryC

Full Member

Re: html / javascript Frage

Monday, March 28th 2005, 11:49pm

danke.
mit onkeyup gehts :)

function checkValueLength(t, nextname) {
if (t.value.length==2) { document.getElementsByName(nextname)[0].focus(); }
}

<input name="vd_day" type="text" onkeyup="checkValueLength(this, 'vd_month');" ...