Ankündigung

Einklappen
Keine Ankündigung bisher.

input auswahl und text selectieren

Einklappen

Neue Werbung 2019

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

  • input auswahl und text selectieren

    Hallo, ich hab ne anzahl X dynamisch erzeugte Inputs:

    <input type='text' id='input[$zähler]' tabindex='".$zähler."' name='anzahlessen[$zähler]' value='' size='3' maxlength='3' onFocus='markit(this)'/>

    Die kann ich mit den Cursortasten hoch und Runter auswählen, klappt super.
    Nun soll aber im gerade aktiven Input der Text markiert werden, so das man den inhalt ändern kann...
    Das funktioniert aber nur im Firefox und nicht im IE...
    Auch Fehlermeldungen bekomme ich bei beiden nicht,
    selbst im Firebug nicht.

    Hier die Javascriptfuntionen:

    <code>
    function markit(o)
    {
    i=o.tabIndex;
    }

    document.onkeydown=function(e)
    {
    key=(window.event)?window.event.keyCode:e.keyCode;
    var x=((key==3?-1(key==40)?1:0))
    var tab;
    if(x)
    {

    document.getElementsByName('anzahlessen['+(i+x)+']')[0].focus();
    document.getElementsByName('anzahlessen['+(i+x)+']')[0].select();
    }
    }
    </code>

  • #2
    Laut Selfhtml sollte das für IE ab 3 gehen. Moich wundert eher, dass das funktioniert: window.event.keyCode:e.keyCode

    Kommentar


    • #3
      lass das focus() weg

      Wenn Du das focus() weg lässt, funktioniert es in so ziemlich allen Browsern.
      Select() setzt ja auch den Fokus auf das entsprechende Eingabefeld

      Dirk

      Kommentar


      • #4
        Selfhtml schreibt gegenteilig, der Fokus ist Voraussetzung für das Select.

        Dort wird zunächst mit document.Testform.Code.focus() auf das Formularfeld positioniert. Denn das Selektieren von Text ist nur möglich, wenn das Feld den Focus hat.

        Kommentar


        • #5
          Browserverhalten....

          ... geht über selfhtml!

          Nein, theoretisch ist das ja korrekt, aber das von tommi89 beschriebene Verhalten kommt beim IE daher, dass keine 2 getrennten Funktionen programmiert wurden: Das Fokus-Setzen liegt hierarchisch unterhalb des Selektierens, kommt also als nachgelagerter Schritt; wenn das Feld erst mal den Fokus hat, kann auf das übergeordnete Selektieren nicht mehr zugegriffen werden.

          Klingt komisch, ist aber so (ich hab's sicherheitshalber auch gerade nochmal bei mir lokal nachgestellt)

          Dirk

          Kommentar


          • #6
            Das Fokus-Setzen liegt hierarchisch unterhalb des Selektierens, kommt also als nachgelagerter Schritt; wenn das Feld erst mal den Fokus hat, kann auf das übergeordnete Selektieren nicht mehr zugegriffen werden.
            Diese Aussage verstehe ich nicht. Das Selektieren geschieht über die Ansprache des Elements über sein Name-Attribut. Was für einen Unterschied sollte das machen?

            Kommentar


            • #7
              die Aussage hat auch nix mit html zu tun

              sondern bezieht sich auf die interne Arbeitsweise des IE

              Kommentar


              • #8
                Also das selfhtml Beispiel (SELFHTML: Navigationshilfen / Suche) funktioniert mit beiden Angaben anstandslos bereits im IE6. Ich behaupte, es liegt an was anderem

                Kommentar


                • #9
                  Ich habs jetzt so:

                  document.onkeydown=function(e)
                  {
                  key=(window.event)?window.event.keyCode:e.keyCode;
                  var x=((key==3?-1(key==40)?1:0))
                  if(x)
                  {
                  try{
                  document.getElementsByName('anzahlessen['+(i+x)+']')[0].select();
                  }catch(e){}
                  }
                  }

                  Das funktioniert im IE6, aber nicht bei allen (!?), hab 2 Rechner in der Firma gefunden, wo das der Fall ist, bei einem anderen mit IE 6 gehts wieder... UND der beim IE7 gehts auch!

                  Kommentar


                  • #10
                    Tja, das Problem schein grundlegender zu sein.

                    Ich habe mit

                    Code:
                    function sel ()
                      {
                      e = document.getElementsByName('a['+i+']')[0];
                      e.focus();
                      //e.select();
                      }
                    und

                    Code:
                    function sel ()
                      {
                      e = document.getElementsByName('a[]')[i];
                      e.focus();
                      //e.select();
                      }
                    und den entsprechend gestalteten Inputfeldnamen (i ist eine globale Variable) nicht geschafft, im IE 6 grundlegend den Input Focus zu setzen. Über alert (e.value) habe ich dabei sichergestellt, dass dabei das richtige Element ausgewählt wurde. Der Focus bleibt aber nach reload stets im Element, das ich zuletzt angeklickt habe. Sieht ganz nach Bug aus.

                    So langsam interessiert mich die Lösung auch. Laut selfhtml unterstützt der IE focus () auf Formelemente seit Version 3.0.

                    [edit]
                    Korrektur: Mit body onLoad funktioniert alles.

                    [edit2]
                    Die Cursortasten, Tab etc. werden im IE6 bei mir auch nicht verarbeitet. Weder von keyCode noch von which. Einzig Enter und Backspace.

                    Kommentar


                    • #11
                      Welchen Grund hat das, dass der Name immer anzahlessen[$zähler] heißt? Warum nicht einfach anzahlessen[] und dann über document.forms[x].elements ansprechen?

                      Kommentar


                      • #12
                        Vielleicht hat er nicht fortlaufende Indizies. Ist aber irrelevant für das Problem.

                        Kommentar


                        • #13
                          Update: Statt onkeypress onkeyup verwenden. Dann klappts auch mit dem IE.

                          Kommentar

                          Lädt...
                          X