JavaScript generiertes Formular auslesen
thomasp
- javascript
Hallo!
Habe mir mit JavaScript ein Forumlar erstellt.
Mein Problem ist, dass ich die Felder des Formulars mit dem Internet Exlporer (ich benutze 7.0) nicht über deren Namen auslesen kann. Mit Firefox funktioniert es.
Hier ist ein kurzes Beispiel.
function createForm()
{
var form = document.createElement("form");
form.name = "fomular";
var inputDomain = document.createElement("input");
inputDomain.setAttribute("type","text");
inputDomain.name="feld1";
inputDomain.setAttribute("autocomplete","off");
inputDomain.setAttribute("maxlength","20");
var button = document.createElement("input");
button.setAttribute("type","button");
button.onclick = onBtnValue;
button.setAttribute("value","Wert des Feldes");
form.appendChild(inputDomain);
form.appendChild(button);
document.body.appendChild(form);
document.forms[0].elements[0].focus();
}
function onBtnValue()
{
alert(document.fomular.feld1.value);
}
Bei laden des html rufe ich die Methode createForm() auf, die die Elemente in die Seite hängt.
Dann setze ich den Focus über den "schmutzigen" Formularzugriff. Das funktioniert in beiden Browsern. Klicke ich auf den Button soll der Wert des Feldes über den Formularname/Feldnamen als Alertbox ausgegeben werden. Das funktioniert NICHT im IE.
Bitte keine Fragen warum ich das Formular nicht dirket in HTML schreibe. Ich habe meine Gründe ;-).
Gruß
Tom
hi,
Mein Problem ist, dass ich die Felder des Formulars mit dem Internet Exlporer (ich benutze 7.0) nicht über deren Namen auslesen kann. Mit Firefox funktioniert es.
Bekanntes Problem des IE - er fügt dynamisch generierte Formularfelder nicht so in die entsprechenden NodeLists ein, wie "statische".
gruß,
wahsaga
Bekanntes Problem des IE - er fügt dynamisch generierte Formularfelder nicht so in die entsprechenden NodeLists ein, wie "statische".
danke!
hallo,
function onBtnValue()
{
alert(document.fomular.feld1.value);
// versuche es mal mit diesem Aufruf:
alert("Form-Name:"
+"\nper Name: "+document.forms["fomular"].name
+"\nper Index: "++document.forms[0].name);
alert(document.forms[0].elements[0].value)
}
Ein IE-Problem: dynamisch erzeugte Forms lassen sich nicht mit Namen aufrufen, über den Index gehts (hoffe ich mal)
Gruß planB
hallo,
function onBtnValue()
{
alert(document.fomular.feld1.value);// versuche es mal mit diesem Aufruf:
alert("Form-Name:"
+"\nper Name: "+document.forms["fomular"].name
+"\nper Index: "++document.forms[0].name);
document.forms["formular"].name funktioniert auch nicht im IE.
Im IE kann ich nur über den Index zugreifen.
Das wollte ich eigentlich vermeiden, aber wenns nicht anders geht...
Gruß
Tom
hallo Tom,
alert("Form-Name:"
+"\nper Name: "+document.forms["fomular"].name
+"\nper Index: "+document.forms[0].name);
^^^^^^ mal korrigiert
document.forms["formular"].name funktioniert auch nicht im IE.
Im IE kann ich nur über den Index zugreifen.
Das wollte ich eigentlich vermeiden, aber wenns nicht anders geht.
das wollte ich mit dem Beispiel zeigen.
um doch noch Formulare und deren Elemente mit Namen ansprechen zu können, habe ich mir Funktionen gebaut, z.B.:
function findItemByName(feld,suchname) {
var item = feld[suchname];
for (var i=0; !item && i<feld.length; i++)
if (feld[i].name == suchname ) item = feld[i];
return item;
}
function getFrm(name) {
return findItemByName(document.forms,name);
}
für die Elemente entsprechend ...
Gruß planB
um doch noch Formulare und deren Elemente mit Namen ansprechen zu können, habe ich mir Funktionen gebaut, z.B.:
function findItemByName(feld,suchname) {
var item = feld[suchname];
for (var i=0; !item && i<feld.length; i++)
if (feld[i].name == suchname ) item = feld[i];
return item;
}function getFrm(name) {
return findItemByName(document.forms,name);
}
>
> für die Elemente entsprechend ...
>
> Gruß planB
>
>
Habs kapiert!! ;-)
Danke!
Gruß Tom
Hi,
Das funktioniert NICHT im IE.
Der IE unterstützt zusätzlich auch eine proprietäre Nutzung von createElement(): createElement('<input name="name">');
Mache mittels Conditional Compilation eine Weiche: IE obige Syntax, Rest der Welt die richtige Syntax.
Gruß, Cybaer
hallo Cybaer,
Der IE unterstützt zusätzlich auch eine proprietäre Nutzung von createElement(): createElement('<input name="name">');
wüsste jetzt nicht, wozu diese Konstruktion notwendig ist. Bisher kam ich ohne sie aus.
var elem=document.createElement("input");
elem.name="name";
Gruß planB
Hi,
wüsste jetzt nicht, wozu diese Konstruktion notwendig ist. Bisher kam ich ohne sie aus.
var elem=document.createElement("input");
elem.name="name";
Hmm, bist Du der gleiche "planB", der im Parallelposting etwas über IE-Fehler zu berichten wußte, und für den Namens-Zugriff noch extra einen Ersatz programmiert hat?
Wenn ja, dann solltest Du doch selber rückschließen können, wofür diese Konstruktion notwendig ist, oder? Sie ermöglicht die einfache Erzeugung und Benutzung von Form-Elementen ohne "Ersatzfunktionen". =;-)
Gruß, Cybaer
hallo,
Wenn ja, dann solltest Du doch selber rückschließen können ...
danke, dann hab' ich's nun auch kapiert :)
und nochmal nachgelesen: MS createElement
Gruß planB
hi,
Der IE unterstützt zusätzlich auch eine proprietäre Nutzung von createElement(): createElement('<input name="name">');
wüsste jetzt nicht, wozu diese Konstruktion notwendig ist.
Schon mal probiert, einem dynamisch generierten Input-Feld im IE einen anderen Typ als den Default text zu verpassen?
gruß,
wahsaga
hallo,
Schon mal probiert, einem dynamisch generierten Input-Feld im IE einen anderen Typ als den Default text zu verpassen?
du denkst an "reset" ? ja, da steht auch was zu drin: MS createElement
danke
Gruß planB
hi,
Schon mal probiert, einem dynamisch generierten Input-Feld im IE einen anderen Typ als den Default text zu verpassen?
du denkst an "reset" ?
Oder auch an "hidden", "image", "radio", "checkbox", "file" ...
gruß,
wahsaga