Ich möchte das herkömmliche Verhalten beim Senden von Formularen beibehalten, wenn ich die Eingabetaste drücke, da die Benutzer damit vertraut sind. Aber durch Reflex drücken sie oft die Eingabetaste, wenn sie mit einem Texteingabefeld fertig sind - aber bevor sie tatsächlich mit dem vollständigen Formular fertig sind.
Ich möchte die Eingabetaste nur dann entführen, wenn der Fokus auf einer bestimmten Klasse von Eingaben liegt.
Suchen Sie Verwandte Fragen das sieht aus wie , was ich suche:
if (document.addEventListener) {
document.getElementById('strip').addEventListener('keypress',HandleKeyPress,false);
} else {
document.getElementById('strip').onkeypress = HandleKeyPress;
}
aber der if (document.addEventListener) {
Teil ist mir unbekannt.
addEventListener()
Syntax zum Hinzufügen von Ereignis-Listenern verwendet, wirdaddEventListener
in jedem DOM-Knotenobjekt (und insbesondere im Dokumentobjekt) ein Funktionsobjekt aufgerufen . Ein Funktionsobjekt wird wahr, wenn es in einen Booleschen Wert konvertiert wird, sodass der erste Zweig ausgeführt wird. Wenn der Browser die addEventListener-Syntax nicht versteht,document.addEventListener
ist sie undefiniert (wird in false konvertiert) und der Fallback-Code im zweiten Zweig wird ausgeführt.Antworten:
Sie können die Eingabe
keypress
in diesen Feldern wie folgt erfassen und abbrechen :$('.noEnterSubmit').keypress(function(e){ if ( e.which == 13 ) return false; //or... if ( e.which == 13 ) e.preventDefault(); });
Dann gib ihnen auf deinen Eingaben einfach ein
class="noEnterSubmit"
:)Wenn andere dies später finden, können Sie es in jQuery 1.4.3 (noch nicht veröffentlicht) auf Folgendes verkürzen:
$('.noEnterSubmit').bind('keypress', false);
quelle
bind('keypress', false);
werden alle Dateneingabe verbieten . Wenn Sie dies also auf Texteingabeelemente anwenden möchten, verwenden Sie die erste Lösung$('body').on('keypress', '.noEnterSubmit', function(){ ... });
Fügen Sie einfach den folgenden Code in
<Head>
Tag in Ihren HTML-Code ein. Die Formularübermittlung erfolgt über die Eingabetaste. Für alle Felder im Formular<script type="text/javascript"> function stopEnterKey(evt) { var evt = (evt) ? evt : ((event) ? event : null); var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); if ((evt.keyCode == 13) && (node.type == "text")) { return false; } } document.onkeypress = stopEnterKey; </script>
quelle
<input type="text" onkeydown="return (event.keyCode!=13);" />
quelle
asp:TextBox
mitAutoPostback="True"
in einemUpdatePanel
. Ich musste das Postback auf der Eingabetaste deaktivieren, daAutoPostback
sowohl die Eingabetaste als auch die Eingabetaste dasTextChanged
Ereignis auslösten . Kurz gesagt, ich brauchte eine Möglichkeit, die Eingabetaste nur auf einer Taste anzuhalten, ohne das Postback zu überschreiben. Das hat perfekt funktioniert! +1So erlauben Sie die Eingabe nur für eine bestimmte Klasse (in diesem Beispiel 'enterSubmit'):
jQuery(document).ready(function(){ jQuery('input').keypress(function(event){ var enterOkClass = jQuery(this).attr('class'); if (event.which == 13 && enterOkClass != 'enterSubmit') { event.preventDefault(); return false; } }); });
quelle