speedy: Focus eines Buttons setzen - in einer ASP.NET Umgebung

Hallo,

ich ärgere mich gerade ein wenig mit ASP.NET rum. Ich möchte da per Javascript (oder gibt es der auch ne ASP Möglichkeit ?) eigentlich was ganz einfaches machen. Ich habe in einem Formular einen Submit Button. Auf den möchte ich jetzt automatisch den Focus setzen, so daß der User nur noch Enter drücken brauch.

Da ich die Buttons nicht über den Formular-Namen ansprechen kann (da diese wohl dynamisch generiert werden), habe ich es mit den anderen Standardmitteln versucht ...

document.getElementById("Seite:Name").focus() ... Fehlermeldung: Element nicht vorhanden - oder so

document.getElementsByName("Seite:Name")[0].focus() ... Fehlermeldung: Objekt unterstützt diese Eigenschaft nicht oder ist Null - oder so - toll, welches Objekt ? - der Submit-Button oder das document.

Dem Submit-Button werden irgendwie zwei Namen gegeben - einmal name="Seite:Name" und einmal id="Seite_Name" (ich persönlich gebe nur id="Name" an - der Rest wird automatisch generiert) - ich habe beide Namen ausprobiert. Ich habe auch schonmal versucht die einzelnen Vorgänge oben einzeln abzuarbeiten (also Objekt holen und in eine Variabel und der Variable den Focus setzen) bzw. den Namen in eine Variable geschrieben und die übergeben - keine Besserung.

Irgendjemand eine Idee, was ich noch falsch mache ? bzw. wo da der Wurm drin steckt ?

MFG,
speedy

  1. Moin!

    Da ich die Buttons nicht über den Formular-Namen ansprechen kann (da diese wohl dynamisch generiert werden), habe ich es mit den anderen Standardmitteln versucht ...

    Die Sache ist eigentlich recht simpel: Fokus setzen hat ausschließlich etwas mit dem anzeigenden Browser zu tun, und absolut nichts mit der die Seite erzeugenden Applikation.

    Javascript benötigt zur Fokussierung nun mal letztendlich irgendeine Elementidentifikation des Buttons. Der einfache Weg ist, ganz einfach den Quelltext der Seite anzeigen zu lassen, den Button-Namen herauszulesen und diesen in einem passenden Javascript zu verwenden.

    Die kompliziertere Methode ist, ein Skript zu schreiben, welches zunächst alle existierenden Formulare durchläuft, und in jedem gefundenen dann alle Elemente durchläuft so lange, bis ein Submit-Button gefunden wurde, auf den dann der Fokus gesetzt wird - in der Hoffnung, dass sich erstens nur ein Formular in dem Dokument befindet, und zweitens auch nur ein Submit-Button in dem Formular.

    Dir ist natürlich auch erlaubt, die ASP.NET-Formularskriptsprache einfach außenvor zu lassen und mit klassischen Mitteln ein Formular (mit festen Formularnamen, die dein Javascript dann auch verwenden kann) zu generieren.

    Alternativ findest du für ASP.NET eine Möglichkeit, den generierten Namen (sofern er denn tatsächlich dynamisch veränderlich ist) des Buttons abzufragen und an anderer Stelle, nämlich im Bereich des auszugebenden JS-Codes, als Text wieder auszugeben. Du schreibst damit sozusagen dynamisch ein Javascript.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
    1. Hi,

      ist ja schön, daß du mir die Möglichkeiten aufzeigst ... aber bringen tut mir das wenig.

      Die simple Methode habe ich ja versucht - und da dabei eine Fehlermeldung kommt, wollte ich wissen, was ich da falsch gemacht habe - ich vermute ja beinahe, daß das Javascript mit dem ":" im Namen ein Problem hat.

      Die etwas kompilziertere Methode bin ich gerade am Testen, aber irgendwie bekomme ich das nicht hin. Ich habe im codebehind eine Methode, die mir das Javascript baut, aber wo mir der Name automatisch rausgesucht wird - ich den Namen des Buttons also nicht selber angebe. (den Code habe ich aus einem funktionierenden VB Code und in C# umgeschrieben) ... nur irgendwie schreibt mir der Code das Javascript nicht in den Output - trotz RegisterClientScriptBlock.

      MFG,
      speedy

      1. Moin!

        ist ja schön, daß du mir die Möglichkeiten aufzeigst ... aber bringen tut mir das wenig.

        Die simple Methode habe ich ja versucht - und da dabei eine Fehlermeldung kommt, wollte ich wissen, was ich da falsch gemacht habe - ich vermute ja beinahe, daß das Javascript mit dem ":" im Namen ein Problem hat.

        Nun ja, wenn du getElementById() aufrufst, aber nicht den String suchst, der im ID-Attribut des Buttons drin ist, sondern den vom name-Attribut... dann kann das ja auch nicht gehen.

        Alternativ kannst du die klassische Methode für den Zugriff auf Formularelemente wählen, dann brauchst du tatsächlich das name-Attribut. Siehe http://de.selfhtml.org/javascript/objekte/forms.htm und http://de.selfhtml.org/javascript/objekte/elements.htm.

        - Sven Rautenberg

        --
        My sssignature, my preciousssss!
        1. Hi,

          Nun ja, wenn du getElementById() aufrufst, aber nicht den String suchst, der im ID-Attribut des Buttons drin ist, sondern den vom name-Attribut... dann kann das ja auch nicht gehen.

          Wie geschrieben, habe ich es mit beiden Strings versucht.

          MFG,
          speedy