|
|
TextBox, textChanged, EnterKey
Letzter Beitrag 03-02-2012, 15:28 von aspnose. 10 Antworten.
-
02-29-2012, 19:10 |
-
aspnose
-
-
-
-
Registriert am 01-22-2012
-
-
Beiträge 66
-
-
|
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 |
-
Stefan Falz
-
ASP.NET Zone Team
-
-
-
Registriert am 12-15-2000
-
-
Beiträge 7.295
-
-
|
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.NETASP.NET Consulting, Development, CoachingASP.NET Zone - Leitfaden für gute PostingsXtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
|
|
-
02-29-2012, 19:38 |
-
TiSch
-
-
-
-
Registriert am 03-30-2006
-
Aachen
-
Beiträge 508
-
-
|
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ß

|
|
-
02-29-2012, 19:59 |
-
aspnose
-
-
-
-
Registriert am 01-22-2012
-
-
Beiträge 66
-
-
|
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 |
-
aspnose
-
-
-
-
Registriert am 01-22-2012
-
-
Beiträge 66
-
-
|
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 |
-
02-29-2012, 20:16 |
-
aspnose
-
-
-
-
Registriert am 01-22-2012
-
-
Beiträge 66
-
-
|
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 |
-
03-02-2012, 13:53 |
-
aspnose
-
-
-
-
Registriert am 01-22-2012
-
-
Beiträge 66
-
-
|
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, 15:28 |
-
aspnose
-
-
-
-
Registriert am 01-22-2012
-
-
Beiträge 66
-
-
|
AW: TextBox, textChanged, EnterKey
Ich habe deine Lösung soeben ausprobiert. Funktioniert genauso ist ist wesentlich kürzer! Vielen Dank!
|
|
|
|
|