Ankündigung

Einklappen
Keine Ankündigung bisher.

Wenn die Seite geladen wurde, Cursor im Input Feld?!

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wenn die Seite geladen wurde, Cursor im Input Feld?!

    Mahlzeit!
    Ihr kennt das ja, wenn ihr auf www.google.de geht, dann ist der Cursor sofort im Inputfeld und man kann gleich lostippen.
    Das würde ich auch gerene für meien Page übernehmen, weiß einer wie das geht? Mit einem Javascript vllt.?
    Danke ^^

    Gruß

  • #2
    Hi.

    Jo, mit JS. Schau dir mal den Quellcode von Google.de an und achte auf die Funktion "sf()", bzw. wie/wo sie aufgerufen wird ... (-> onload="...").

    Sollte man recht simpel "transferieren" können ...

    Kommentar


    • #3
      Jo das habe ich mir ja auch angeguckt (deswegen erwähne ich JS ^^), aber ich hab das nicht so recht hinbekommen, da ich eigentlich nicht JS arbeite. Die Funktion selber scheint ja diese hier zu sein:
      Code:
      function sf(){document.f.q.focus();}
      Das 'q' ist scheinbar der Name des Input Feldes, aber was ist das 'f'? Und kann ich den 'onload()' Befehl auch irgendwo anders, als in Body reinpacken?

      Gruß

      Kommentar


      • #4
        Hast du dir das Formular mal angesehen ?

        "f" -> Name des Formulars
        "q" -> Name des Inputs

        ... den 'onload()' Befehl auch irgendwo anders, als in Body reinpacken?
        Warum das ? Warum nicht in den "body" ?

        Kommentar


        • #5
          Danke hatte das 'f' als Name übersehen.
          Habs jetzt getestet und es funktioniert auch soweit, nur habe ich nun das Problem, dass ich einen JS Fehler bekomme, wenn eine andere Seite und nicht der Login Bildschirm aufgerufen wird.
          Und zwar ist das bei mir so, dass ich eine Index Seite habe und je nach Link den man drückt, wird halt eine andere Seite in die Index Seite included. Deshalb wollte ich ja wissen, ob man den onLoad Befehl auch woanders als Body setzen kann.
          Wenn ich z.B. die Startseite aufrufe, bekomme ich schon das Fehlersymbol in der Statusleiste, dass das JS nicht ausgeführt wird, wenn ich dann auf den Login Bereich klicke geht das ganze.

          Also nochmal die Frage -> Kann man es auch woanders als in <body> einbinden? Oder kann man die Funtion irgendwie leicht modifizieren, damit er es nur lädt, wenn das Formular halt da ist?

          Gruß

          Kommentar


          • #6
            Wäre zu prüfen, ob das Dokument ein Objekt mit dem entsprechenden Namen des Formulars kennt. Bezogen auf die von Google verwendete Funktion sollte das dann so aussehen:

            Code:
                    function sf()
            	{
            		if (document.f.q)
            		{
            			document.f.q.focus();
            		}
            	}

            Kommentar


            • #7
              Danke, das ist schonmal nicht schlecht!
              Nur leider bekomm ich wieder dieses Symbol für Fehler, als Beschreibung steht da:
              'document.f.q' ist Null oder kein Objekt
              Diese bekomme ich wenn ich grad nicht die Login Seite included habe, wenn ich auf Login gehe ist alles normal ohne Fehler.
              Könnte man nicht irgendwie was in else reinpacken, damit es nichts macht, wenn die Bediengung nicht zutrifft? Also auch nicht diese Fehlermeldung produziert? ^^
              Sorry, falls ich damit nerve, es ist mir aber halt wichtig.
              Und danke für deine Mühe!

              Gruß

              Kommentar


              • #8
                Hallo - ich nochmal ...

                'document.f.q' ist Null oder kein Objekt
                ... klingt nach IE. FF schluckt den Code ohne weiteres.

                Der IE will's tatsächlich ganz genau wissen. Hab da mal was gefrickelt, dass auch dem IE in den Kram passt ...
                Code:
                function sf()
                	{
                		if (document.f && document.forms['f'])
                		{
                			if (
                					document.f.q &&
                					document.f.elements['q'] &&
                					(document.f.q.type=='text')
                				)
                			{
                				document.f.q.focus();
                			}
                		}
                	}
                Hab's grad mal "unter deinen Bedingungen" laufen lassen - sollte nun gehen ...

                Kommentar


                • #9
                  Hi.

                  Ich hab auf meiner Todo-Liste eines aktuellen Projektes unter der Rubrik "Kür" auch so eine Funktion stehen. Weil ich wenig Plan von JS hab, es eben "Kür" ist und hier grad so angesprochen wird, frag ich hier einfach malganz faul nach einer Lösung.

                  Auf einer Seite gibt es 0-n Formulare. Diese können der Klasse "focus" zugeordnet sein (im Optimalfall gibt es nur ein Formular dieser Klasse je Seite, kann ich aber nicht garantieren - kann also 0-n <form class="focus"> geben). Innerhalb jedes Formular sind auch wieder 0-n Elemente dieser Klasse zugeordnet (im Optimalfall eben wieder nur eines).

                  Der Fokus soll nun auf folgendes Objekt gesetzt werden: Das erste Element <textarea> oder <input type="text" /> mit class="focus" (falls kein Element von dieser Klasse ist, dann das erste passende Element im Formular) innerhalb des ersten Formulars mit class="focus" (falls kein Formular von dieser Klasse ist, dann innerhalb des ersten Formulars der Seite).

                  Später wird es je Seite dann nurnoch maximal ein Formular geben, so dass anstat nach dem ersten <form class="focus" /> nach dem ersten div oder span (vielleicht sogar beliebigen Element) mit class="focus" gesucht werden muss.

                  Jemand Lust, das zu lösen? *g

                  Basti

                  Kommentar


                  • #10
                    Super klappt wunderbar, danke !!!
                    Und viel Glück @ Basti ^^

                    Gruß

                    Kommentar


                    • #11
                      Zitat von Basti
                      Hi.

                      Ich hab auf meiner Todo-Liste eines aktuellen Projektes unter der Rubrik "Kür" auch so eine Funktion stehen. Weil ich wenig Plan von JS hab, es eben "Kür" ist und hier grad so angesprochen wird, frag ich hier einfach malganz faul nach einer Lösung.

                      Auf einer Seite gibt es 0-n Formulare. Diese können der Klasse "focus" zugeordnet sein (im Optimalfall gibt es nur ein Formular dieser Klasse je Seite, kann ich aber nicht garantieren - kann also 0-n <form class="focus"> geben). Innerhalb jedes Formular sind auch wieder 0-n Elemente dieser Klasse zugeordnet (im Optimalfall eben wieder nur eines).

                      Der Fokus soll nun auf folgendes Objekt gesetzt werden: Das erste Element <textarea> oder <input type="text" /> mit class="focus" (falls kein Element von dieser Klasse ist, dann das erste passende Element im Formular) innerhalb des ersten Formulars mit class="focus" (falls kein Formular von dieser Klasse ist, dann innerhalb des ersten Formulars der Seite).

                      Später wird es je Seite dann nurnoch maximal ein Formular geben, so dass anstat nach dem ersten <form class="focus" /> nach dem ersten div oder span (vielleicht sogar beliebigen Element) mit class="focus" gesucht werden muss.

                      Jemand Lust, das zu lösen? *g

                      Basti
                      Code:
                      window.onload = function() {
                        if (!document.forms.length) return;
                        var frm = 0;
                        for (var i = 0; i < document.forms.length; i++) {
                          var tmp = document.forms[i];
                          if (tmp.className == 'focus') frm = tmp;
                        }
                        if (!frm) frm = document.forms[0];
                        var fld1 = 0;
                        var fld2 = 0;
                        for (var i = 0; i < frm.elements.length; i++) {
                          var tmp = frm.elements[i];
                          if (tmp.type == 'text' || tmp.type == 'textarea') {
                            fld1 = tmp;
                            if (tmp.className == 'focus') fld2 = tmp;
                            if (fld1 == fld2) {
                              fld2.focus();
                              return;
                            }
                          }
                        }
                        if (fld1) fld1.focus();
                      }

                      Kommentar


                      • #12
                        Yeah! Vielen Dank!

                        Ich habs jetzt nur mal gelesen und nicht getestet. Wenn ich das richtig sehe, dann wird, wenn kein input- oder textarea-Element der Klasse focus zugeordnet ist das letzte solche Element im Formular fokusiert und nicht das erste. Kann das sein?

                        Wäre dann wohl sinnig, die Fundstellen in ein Array zu packen oder die erste gesondert zu speichern.

                        Aber das krieg ich schon hin (wenns denn überhaupt so ist, wie ich meine).

                        Vielen Dank nochmal.

                        Basti

                        Kommentar


                        • #13
                          stimmt, war halt so auf die Schnelle mal hingetippselt
                          Code:
                              
                          window.onload = function() {
                            if (!document.forms.length) return;
                            var frm = 0;
                            for (var i = 0; i < document.forms.length; i++) {
                              var tmp = document.forms[i];
                              if (tmp.className == 'focus') frm = tmp;
                            }
                            if (!frm) frm = document.forms[0];
                            var fld1 = 0;
                            for (var i = 0; i < frm.elements.length; i++) {
                              var tmp = frm.elements[i];
                              if (tmp.type == 'text' || tmp.type == 'textarea') {
                                if (!fld1) fld1 = tmp;
                                if (tmp.className == 'focus') {
                                  tmp.focus();
                                  return;
                                }
                              }
                            }
                            if (fld1) fld1.focus();
                          }

                          Kommentar


                          • #14
                            Ist zwar ein relativ alter Thread, aber wenn ich das Thema noch einmal aufgreifen darf: gibt es eine Möglichkeit, auch ohne JavaScript den Fokus zu setzen?

                            cya

                            Kommentar


                            • #15
                              Zitat von vollkommenegal
                              Ist zwar ein relativ alter Thread, aber wenn ich das Thema noch einmal aufgreifen darf: gibt es eine Möglichkeit, auch ohne JavaScript den Fokus zu setzen?
                              Klar: Klicke mit deiner Maus in das Formular-Element oder springe mit TAB dahin.
                              Anders geht's nicht

                              Kommentar

                              Lädt...
                              X