ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

in
Home Blogs Foren FAQ Communities Fotos Downloads
Werbeanzeige

TextBox, textChanged, EnterKey

Letzter Beitrag 03-02-2012, 15:28 von aspnose. 10 Antworten.
Beiträge sortieren: Zurück Weiter
  •  02-29-2012, 19:10 223961

    TextBox, textChanged, EnterKey

    Hallo,

    ich benutzen diverse Textboxen um verschiedene Filter für diverse SQL-Abfragen zusammen zu bauen. Ich benutze dazu das Text_Change-Event der Textboxen.
    Wenn ich nun Text eingeben und Return drücke funktioniert das auch. Wenn ich aber nochmal in die Textboxen gehe, wo ich schon was eingetragen habe, und Return drücke, passiert nichts.
    Auch wenn ich nochmal genau das selbe eingebe und dann erst Return drücke.

    Ich denke es liegt eben am TextChange-Event, das eben nicht mehr ausgelösst wird, wenn das gleiche wie vorher drin steht (also sich der Text nicht geändert hat). Kann das sein? Bzw. wie kann ich es erreichen, das ich auf die EnterTaste reagieren kann im Zusammenhang mit einer Textbox?
  •  02-29-2012, 19:13 223962 Antwort zu 223961

    AW: TextBox, textChanged, EnterKey

    Hi,
    aspnose:

    Ich denke es liegt eben am TextChange-Event, das eben nicht mehr ausgelösst wird, wenn das gleiche wie vorher drin steht (also sich der Text nicht geändert hat). Kann das sein?

    Korrekt. Genau so ist es. ASP.NET vergleicht den Wert aus dem ViewState mit dem gesendeten Wert. Ist der gleich, wird korrekterweise das TextChanged Ereignis nicht ausgelöst.

    aspnose:

    Bzw. wie kann ich es erreichen, das ich auf die EnterTaste reagieren kann im Zusammenhang mit einer Textbox?

    Gar nicht. Du kannst aber problemlos einen Button einbauen, dessen Click Event dann ausgelöst wird. Alternativ geht auch der "klassische" Weg, Request.Form( <TextBox>.UniqueId ) abzufragen und dann selbst Events auszulösen.


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  02-29-2012, 19:38 223963 Antwort zu 223962

    AW: TextBox, textChanged, EnterKey

    Stefan Falz:
    Hi,
    aspnose:

    Ich denke es liegt eben am TextChange-Event, das eben nicht mehr ausgelösst wird, wenn das gleiche wie vorher drin steht (also sich der Text nicht geändert hat). Kann das sein?

    Korrekt. Genau so ist es. ASP.NET vergleicht den Wert aus dem ViewState mit dem gesendeten Wert. Ist der gleich, wird korrekterweise das TextChanged Ereignis nicht ausgelöst.

    Ist es nicht eher so dass clientseitig gar nicht erst der Postback ausgelöst wird wenn das javascript onchange event nicht ausgelöst wurde?!

    aspnose:
    wie kann ich es erreichen, das ich auf die EnterTaste reagieren kann im Zusammenhang mit einer Textbox?

    Wozu denn? Macht doch Sinn dass der Server nicht mit Anfragen belastet wird die sowieso nicht ändern würden.

    Falls die Frage generell gemeint ist, das geht nur mit javascript.

    Zum Beispiel mit jQuery:

    <input id="target" type="text" value="Hallo" />
    <script type="text/javascript">
        $('#target').keyup(function (e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code == 13) { //Enter keycode
                alert("Enter wurde gedrückt");
            }
        });
    </script>


    Falls ein Button "in der Gegend" ist wird allerdings bei Enter automatisch der erste Button "geklickt". Das kann man folgendermassen verhindern:

    http://stackoverflow.com/a/4210023/284240


    Gruß

    Stack Overflow profile for Tim at Stack Overflow, Q&A for professional and enthusiast programmers
  •  02-29-2012, 19:59 223964 Antwort zu 223962

    AW: TextBox, textChanged, EnterKey

    Danke für die Antwort!

    Wenn ich eine Button einbaue, dann wird ja nur beim anklicken des Buttons das Klick-Event ausgelösst. Das ist noch keine Lösung um auf die Enter-Taste zu reagieren, oder? Ich möchte eben vermeiden, das der Anwender extra noch einen Button anklicken muss, um die Abfrage auszuführen. Direkte Eingabe und Enter drücken finde ich viel praktischer, als wenn nach dem tippen wieder die Maus genommen werden muss um einen Button anzuklicken und dann erst die Abfrage ausgeführt wird.

    Oder kommt eher der "klassische" Weg für mich in Frage, den zu oben angegeben hast? Allerdings brauche ich dafür dann ein Beispiel, weil ich nicht weiß, wie das dann konkret zu machen wäre.


    Gruß

    Nose


  •  02-29-2012, 20:10 223965 Antwort zu 223963

    AW: TextBox, textChanged, EnterKey

    In meine Fall macht es Sinn. Ich Frage in einer Textbox einen Wert ab und zeige das Gridview an (die einfache Abfrage). Weiter unten kann ich eine komplexeren Filter mit einigen TextBoxen und DropDown-Felder zusammenbauen und mit Return eben abschicken.

    Wenn der Anwender nun eine komplexen Filter abgesetzt hat und  danach die einfache Abfrage ausführt, ist auch noch alles o.k. Wenn er danach aber nochmal in die Textboxen des komplexen Filters reinklickt und Return drück (die vorher eingegeben Werte stehen ja noch alle drin), passiert eben nichts (Text hat sich ja nicht geändert). Es wäre dann eben schön wenn das trotzdem wieder ausgeführt werden würde.

    Einfache Abfrage und komplexer Filter nutzen das gleiche Gridview zur Anzeige.

    Momentan lösche ich alle Textboxen den kompexen Filters, wenn die einfache Abfrage benutzt wird und umgekehrt auch. Das ist zwar auch nicht so Userfreundlich aber besser als wenn der Anwender nochnmal reinklickt Return drückt und eben nichts passiert.


  •  02-29-2012, 20:13 223966 Antwort zu 223964

    AW: TextBox, textChanged, EnterKey

    Hi,

    aspnose:

    Direkte Eingabe und Enter drücken finde ich viel praktischer, als wenn nach dem tippen wieder die Maus genommen werden muss um einen Button anzuklicken und dann erst die Abfrage ausgeführt wird.

    einfach ein <asp:Panel ... / >Control um die Elemente und als DefaultButton dann ebendiesen Button angeben. Dann sollte das so klappen.


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  02-29-2012, 20:16 223967 Antwort zu 223966

    AW: TextBox, textChanged, EnterKey

    Ich hatte das mal so mit dem Panel und dem DefaultButton. Ich fande es nur störend einen Button anzuzeigen, der nicht geklickt werden muss, oder kann man diesen auch verstecken?
  •  02-29-2012, 20:17 223968 Antwort zu 223963

    AW: TextBox, textChanged, EnterKey

    Hi,
    TiSch:

    Ist es nicht eher so dass clientseitig gar nicht erst der Postback ausgelöst wird wenn das javascript onchange event nicht ausgelöst wurde?!

    wenn man AutoPostBack verwendet, kann das sein. Aber der rein serverseitige EventHandler für TextChanged hat damit nichts zu tun, der prüft die Übergabewerte.


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  03-02-2012, 13:53 223985 Antwort zu 223968

    AW: TextBox, textChanged, EnterKey

    Ich habe das jetzt doch mit einem Panel und einen Default-Button gelösst.

    Da mir aber der eigentlich nicht beötigte Button ein Dorn im Auge war, habe ich das jetzt so gelösst:

    Per CSS "aus dem Weg geräumt":


     <style type="text/css">
    .hidden
    {
        position: absolute;
        left: -10000px;
        top: auto;
        width: 1px;
        height: 1px;
        overflow: hidden;
    }
     </style>

     <asp:Button ID="btnSubmit" CssClass="hidden" runat="server" />

  •  03-02-2012, 14:15 223986 Antwort zu 223985

    AW: TextBox, textChanged, EnterKey

    aspnose:
    Per CSS "aus dem Weg geräumt":

     <style type="text/css">
    .hidden
    {
        position: absolute;
        left: -10000px;
        top: auto;
        width: 1px;
        height: 1px;
        overflow: hidden;
    }
     </style>


    Kannst Du abkürzen:
    .hidden
    {
        display: none;
    }


    http://de.selfhtml.org/css/eigenschaften/positionierung.htm#display


    Gruß

    Stack Overflow profile for Tim at Stack Overflow, Q&A for professional and enthusiast programmers
  •  03-02-2012, 15:28 223987 Antwort zu 223986

    AW: TextBox, textChanged, EnterKey

    Ich habe deine Lösung soeben ausprobiert. Funktioniert genauso ist ist wesentlich kürzer! Vielen Dank!
Als RSS Feed in XML ansehen
Powered by Community Server (Commercial Edition)