Hallo Matti,
Es gibt eine Möglichkeit den Focus eines Feldes per JavaScript automatisch auf das nächste Feld zu setzen, sobald dieses voll ist. Voll bedeutet, dass hier die max. Anzahl an Zeichen vorher festgelegt sein muss. Siehe "Feld -> Zeichenzahl im Feld" oder "Feld -> Länge begrenzen Max. Zeichen".
Die JavaScript Objekte, die hierbei benötigt werden heissen "traversal" und "traverse". Bevor diese Objekte aber in der XML Ansicht des Formulars auftauchen muss noch die Tab Reihenfolge im Formular festgelegt werden. Hierzu muss (falls nicht geschehen) das Fenster "Tab-Reihenfolge" über "Fenster -> Tab-Reihenfolge" eingeblendet werden. Die Tab-Reihenfolge muss auf "Benutzerdefiniert" eingestellt sein.
Der Rest geht über JavaScript. Siehe Beispieldatei, welche 2 Varianten von Feldern darstellt.
1. Numerische Felder, welche bei der Auswahl der max. Anzahl an Zeichen in eine Tabelle geteilt werden.
2. Textfelder, welche in eine Tabelle geteilt werden können, oder auch ohne eine Tabell die Anzahl an max. Zeiche zulassen.
Funktion der Beispieldatei:
Es wird auf die jeweilige Stelle im Feld referenziert und die max. Anzahl an Tabellen bzw. die max. Anzahl an Zeichen ausgelesen. Diese wird bei der Eingabe mit der Anzahl der Zeichen im Feld abgeglichen. Bei einer Übereinstimmung wird ein Tab Sprung in das nächste Feld ausgeführt.
Falls jemand mit den Funktionen nicht zurecht kommt, so kann er diese Löschen und dafür die über "/*" und "*/" (markieren den Bereich, der beim Scripten ignoriert werden soll) markierten Bereich einblenden.
Mit Funktion:
Code: Alles auswählen
Formular1.#subform[0].NumerischesFeld1::change - (JavaScript, client)
/*
var sLength = this.resolveNode("ui.#numericEdit.comb").numberOfCells;
var nLength = xfa.event.fullText.length;
var sTraverse = this.resolveNode("traversal.#traverse").ref;
if(nLength == sLength){
if(sTraverse != null){
xfa.host.setFocus(sTraverse);
}
}
*/
Scripte.AutoFocusNummernFeld(this);
Ohne Funktion:
Code: Alles auswählen
var sLength = this.resolveNode("ui.#numericEdit.comb").numberOfCells;
var nLength = xfa.event.fullText.length;
var sTraverse = this.resolveNode("traversal.#traverse").ref;
if(nLength == sLength){
if(sTraverse != null){
xfa.host.setFocus(sTraverse);
}
}
Gruß,
Walde
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.