focus - bildschirmtastatur...
jonigeht
- javascript
Wunderschönen Guten morgen,
Ich habe mir eine kleine Bildschirmtastatur in Javascript gebastelt, mit diesem soll später auf einem Terminal mit Touchscreen Daten eingegeben werden.
Jetzt habe ich aber folgendes Problem:
Ich habe meine Tastatur bisher so "programmiert" das er immer EINE bestimmt Textbox aus meinem Formular nimmt, ich habe aber mehrere Textboxen die ausgefüllt werden müssen. Also meine Tastatur soll quasi immer das im Moment fokussierte Feld nehmen, und da die Werte eintragen.
Da Stoß ich aber mit meinen kaum vorhandenen Javascript Kenntnissen an meine Grenzen... :( ...
Kann mir wer helfen, wär echt `nen Traum!
Beste,
Jonas
Hi,
Also meine Tastatur soll quasi immer das im Moment fokussierte Feld nehmen, und da die Werte eintragen.
Wenn ein Textfeld fokussiert wird, dann wird der Focus-Event ausgelöst. Wenn es verlassen wird, der Blur-Event. Beschäftige dich also mit Event-Handling, und sichere dir das jeweils aktive Feld, indem Du überall onfocus benutzt.
Gruß, Cybaer
Moin,
Danke für euere schnellen Antworten,
ich hab mir jetzt mal folgenden quelltext zusammen gedichtet:
<script type="text/javascript">
var aktivesfeld;
function fokussiert(wert)
{
aktivesfeld = window.document.form1.wert;
}
function Tastatur(wert)
{
if(window.document.form1.Shift[0].checked == true)
{
wert = wert.toUpperCase();
}
aktivesfeld.value = aktivesfeld.value +wert;
}
</script>
<input name="feld1" type="text" id="test" onFocus="fokussiert('feld1')">
Meiner Meinung nach sollte das klappen :D ... aber tut es leider nicht, ich bekomm im Explorer immer ein Fehler das 'aktivesfeld gleich NULL ist oder kein objekt'
Mahlzeit,
<script type="text/javascript">
var aktivesfeld;
function fokussiert(wert)
Deine Funktion erwartet also einen Übergabeparameter.
{
aktivesfeld = window.document.form1.wert;
Dieser Parameter muss anscheinend ein Objekt unterhalb des Objekts namens "form1" sein.
<input name="feld1" type="text" id="test" onFocus="fokussiert('feld1')">
Wieso übergibst Du dann also einen String?
Meiner Meinung nach sollte das klappen :D ... aber tut es leider nicht, ich bekomm im Explorer immer ein Fehler das 'aktivesfeld gleich NULL ist oder kein objekt'
Der String 'feld1' ist ja auch kein Objekt. Wie wär's stattdessen mit folgendem:
<script type="text/javascript">
[code lang=javascript]var aktivesfeld; // globale Variablen sind zwar eigentlich Scheiße, aber in diesem Fall geht's damit wohl schneller als mit einer umfangreichen Objektkonstruktion
function fokussiert(obj) {
if (obj) {
aktivesfeld = obj;
}
}
</script>
<input name="feld1" type="text" id="test" onFocus="fokussiert(this);">[/code]
MfG,
EKKi
100%ig ... so funktioniert es!!
Aller besten Dank!!
Jonas
Hi,
var aktivesfeld; // globale Variablen sind zwar eigentlich Scheiße, aber in diesem Fall geht's damit wohl schneller als mit einer umfangreichen Objektkonstruktion
Wenn ich eine Funktion habe, die für die Tasteneingabe verantwortlich ist (z.B. makeInput()), dann kann man statt der globalen Variablen auch enfach diese Funktion mit einer entsprechenden Eigenschaft versehen (z.B. makeInput.activeElement=obj)
Gruß, Cybaer
Mahlzeit,
Ich habe meine Tastatur bisher so "programmiert" das er immer EINE bestimmt Textbox aus meinem Formular nimmt, ich habe aber mehrere Textboxen die ausgefüllt werden müssen. Also meine Tastatur soll quasi immer das im Moment fokussierte Feld nehmen, und da die Werte eintragen.
Du könntest jedem <input>, das mit der Bildschirmtastatur ausgefüllt werden soll, einen "onfocus"-Event verpassen, bei dem es sich irgendwie bei einer zentrallen Stelle (dem Tastaturkonstrukt?) meldet und ankündigt, dass es jetzt den Hut auf hat ... o.ä.
MfG,
EKKi