Verhindern postback auf, Geben Sie in einem asp.net inputfield
Ich habe ein problem mit der Taste Enter werden die im javascript und asp.net
Habe ich eine Kontrolle, wie dies mit einem textchanged-Ereignis, die nicht finden, aber ich will es kontrollieren, wenn der Benutzer nicht geben Sie
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
Deshalb habe ich diese javascript-Funktion die sehr gut funktioniert. Denn es vermeidet die Enter-postback bei jeder Zeicheneingabe
function EnterEvent(e) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return true;
}
else {
return false
}
}
Und dann wollte ich Steuern, Wann der TextBox-Inhalte, also änderte ich das js wie diese.
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return ctrl.value.length > 2;
}
else {
return false
}
}
Die Kontrolle
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
Aber es passiert nichts. Jederzeit, die ich Tue, Geben Sie die Seite ein postback.
Ich habe auch diese in der code-behind auf der Last-Seite
TextBox1.Attributes.Add("onkeypress", "EnterEvent(event, this);");
TextBox1.Attributes.Add("onkeyup", "EnterEvent(event, this);");
TextBox1.Attributes.Add("onkeydown", "EnterEvent(event, this);");
Meiner Seite ist noch zu tun postback auf Enter-Taste. Die Idee ist, stoppen Sie die Enter-postback, wenn mindestens 3 Zeichen. Eine Idee oder einen anderen Ansatz?
> -----------------BEARBEITEN--------------------
Ich fügte hinzu, diese Funktion, bevor Sie die EnterEvent
$(function () {
$(':text').bind('keydown', function (e) {
if (e.keyCode == 13)
e.preventDefault();
});
});
Aber blockiert es die Eingabe in alle Seite. Geben Sie funktioniert überhaupt nicht.
> -----------------BEARBEITEN 2--------------------
Gut, ich geglückt! Wie ich sagte in einem vorherigen Kommentar, ich habe versucht, wie in der Vergangenheit das hinzufügen einer dummy-button-Steuerelement, und ich übertragen das event von der textbox und dem aufrufen der click-Ereignis. Es ist nicht SAUBER, aber es funktioniert und ich bin in Eile. Danke Euch allen für die Beantwortung. Wenn jemand helfen kann, trotzdem würde ich es zu schätzen wissen. Ich werde weiterhin die überprüfung dieser Frage. Danke.
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13 && ctrl.value.length > 2) {
$('[id$=Button1]').click();
}
else {
return false;
}
}
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" />
<asp:Button ID="Button1" runat="server" OnClick="TextBox1_TextChanged" style="visibility:hidden;width:0;"/>
Ich hab das jetzt einfach. Postback und setzt die Steuern verschwinden.
uhm okay, wie hast du deine trigger ?
Gut und soweit ich weiß, wird die TextBox nicht haben, so ein event onkeyup ?
Ich habe gebaut, ein Spielmann, siehe unten, vielleicht ist das ein guter Ort, um zu versuchen, heraus Material. Es scheint für mich arbeiten.
InformationsquelleAutor Maximus Decimus | 2013-09-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ein ähnliches brauchen, um zu verhindern, dass ein enter-Tastendruck (obwohl, ich brauchte nicht zu überlegen, die Eingabe-Länge Zustand wie in diesem Fall) und fand diese, welche das problem gelöst... einfacher als das hinzufügen einer ganzen Skript-block, wenn alles, was Sie tun müssen, ist aufhören das Formular postback, weil jemand die EINGABETASTE in einem Textfeld.
Dachte, ich würde teilen, in diesem Fall jemand anderes auf der Suche ist für diese Funktionalität nur.
InformationsquelleAutor Andy
Getestet habe ich auf meiner Seite und es funktioniert. Nicht das Ereignis onkeydown?
Ja, ich habe es versucht. Sieh mein EDIT 2 in meinem Beitrag. Dank
Flavia ' s code sieht richtig aus. edit-2-code ist Noch immer fehlt die return-Anweisung. Wenn Sie möchten, block die Veranstaltung, die Sie tun müssen, um "return func()" oder der client-Seite wird der Befehl nicht blockiert werden
InformationsquelleAutor Flavia Obreja
Versuchen:
stoppen Sie die Enter-Ereignis.
Habe ich gebaut, ein wenig fiddler:
http://jsfiddle.net/rblaettler/Y3b8F/5/
Ist das, was Sie sind versuchen zu tun?
Es werden nur übermittelt, wenn Sie mehr als 2 Zeichen.
InformationsquelleAutor Remy