focus() auf dynamische Elemente setzen
Mika
- javascript
Hallo Zusammen,
wenn ich mit der Funktion "focus()" den Cursor in ein bestimmtes
Textfeld, welches vorher dynamisch erzeugt wurde setzen will,
funktioniert das nicht.
ich habe es mit:
document.getElementById("textfeld").focus();
versucht.
Leider funktioniert es so nicht. Ist es grundsätzlich möglich den Cursor per focus(); in ein dynamisch erzeugtes Textfeld zu setzen?
Und wenn ja wie?
Gruß
Mika
Hallo,
wenn ich mit der Funktion "focus()" den Cursor in ein bestimmtes
Textfeld, welches vorher dynamisch erzeugt wurde setzen will,
funktioniert das nicht.
Gibt es eine Fehlermeldung oder wird das Textfeld einfach nur nicht fokussiert?
Normalerweise geht das ohne Probleme [Beispiel].
mfg. Daniel
Hi,
eine Fehlermeldung wird nicht angezeigt, das Feld wird einfach nicht
fokkusiert.
Ich habe es aber auch schon so wie in deinem Beispiel versucht, doch leider ohne Erfolg.
Und als ich dein Beispiel das erstmal aufgerufen habe kam zunächst eine Fehlermeldung. Erst nach einem Neuladen der Seite hat es funktioniert. Allerdings kann ich diese Fehlermeldung nicht mehr reproduzieren.
Hast jemand vielleicht eine Idee woran es liegen könnte das es bei mir nicht funktioniert???
Gruß Mika
Hello,
Hast jemand vielleicht eine Idee woran es liegen könnte das es bei mir nicht funktioniert???
MfG
Rouven
Hallo,
- du versuchst focus zu setzen, obwohl das Element noch nicht im Dokumentbaum eingehängt ist
nein, daran kann es nicht liegen, da ich denn focus erst setze nachdem das Element erzuegt wurde.
zum Beispiel:
var NewTextField = document.createElement("input");
NewTextField.type = "text";
document.body.appendChild("NewTextField");
NewTextField.focus();
rein theoretisch müsste das ja richtig sein
- du hast mehrere Elemente mit der ID.
ich habe folgende Funktion:
function check_field_artnr(){
if(this.value.length != 6){
alert("Eine Artikelnummer muss aus 6 Ziffern bestehen!");
this.focus();
}
und folgendes Element, das erstellt wird und die Funktion
per Eventhandler "onchange" aufruft...
newTextField = document.createElement("input");
newTextField.type = "text";
newTextField.style.width = "48px";
newTextField.maxLength = "6";
newTextField.id = "artnr"+y;
newTextField.name = "artikelnummer"+y;
newTextField.onchange = check_field_artnr;
document.getElementById("tableCol"+y+x).appendChild(newTextField);
wenn ich einem Element eine ID vergebe, dann achte ich darauf,
dass diese ID eindeutig ist...
Was ist daran falsch?
Gruß
Mika
ich habe folgende Funktion:
function check_field_artnr(){
if(this.value.length != 6){
alert("Eine Artikelnummer muss aus 6 Ziffern bestehen!");
this.focus();
}
Ich nehme an die fehlende Klammer existiert im Orginal.
Das Problem hier dürfte ein Bug sein, FF setzt leider nicht richitg den focus wenn vorher ein alert() kam.
du musst hier einen kurzen Timeout einbauen.
var self = this;
window.setTimeout( function() { self.focus();}, 10);
Struppi.
Hello,
Das Problem hier dürfte ein Bug sein, FF setzt leider nicht richitg den focus wenn vorher ein alert() kam.
du musst hier einen kurzen Timeout einbauen.
oh Gott wie schlecht...Kann man irgendwo die dümmsten und schwer zu findenden Softwarebugs nominieren?? *Notiz im Hinterkopf mach, falls ich mal über das Problem stolpere*
MfG
Rouven
Hi,
Ist es grundsätzlich möglich den Cursor per focus(); in ein dynamisch erzeugtes Textfeld zu setzen?
Und wenn ja wie?
so wie es mein Vorgänger gepostet hat. Und in Abwandlung, wenn es über die ID gehen soll:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<script type="text/javascript">
function mach_txt(){
var txt = document.createElement("textarea");
txt.id = "mytxt";
document.body.appendChild(txt);
}
</script>
</head>
<body>
<p onclick="mach_txt()">Mach Textarea</p>
<p onclick="document.getElementById('mytxt').focus()">Setze focus</p>
</body>
</html>
Gruesse, Joachim
wenn ich mit der Funktion "focus()" den Cursor in ein bestimmtes
Textfeld, welches vorher dynamisch erzeugt wurde setzen will,
funktioniert das nicht.
doch das funktioniert.
Und wenn ja wie?
mit der Methode focus()
noch was:
"funktioniert nicht" ist keine Fehlerbeschreibung und "ich habe versucht" nur eine mäßige Beschreibung dessen was du machst. Jetzt muss jeder, der dir helfen will sich ein Beispiel aus den finger saugen um dir zu zeigen das es geht
Das hier geht einwandfrei
function add(form) {
var el = document.createElement('input');
form.appendChild(el);
el.focus();
}
<input type="button" name="vorgabe" value="add" onclick="add(this.form)">
Struppi.