Gibt es eine umgekehrte Funktion von preventDefault () in JavaScript?
Ich zähle Wörter in einem text-Feld, und nach einer gewissen Menge von Wörtern, die ich verwenden, vermeiden Standard. In der anderen, ich möchte renable die Standard-Befehle.
Tut preventDefault() haben eine entgegengesetzte Funktion?
Ist hier einige Beispiel-code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>preventDefault</title>
<style type="text/css"></style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var wordNum = 3;
var input_length;
$("#max").text("max word(s): " + wordNum);
$("#test").keypress(function(event) {
input_length = $.trim($(this).val())
.replace(/\s+/g, " ")
.split(' ').length;
if (input_length > (wordNum - 1)) {
event.preventDefault();
} else {
return true;
}
});
});
</script>
</head>
<body>
<div id="max"></div>
<textarea id="test" cols="20" rows="5"></textarea>
</body>
</html>
Scheint es zu funktionieren im IE, aber Firefox mag es nicht.
InformationsquelleAutor der Frage Wilkins | 2009-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das problem, das Sie haben ist, dass Sie nicht auf der Suche für Sie die entf-Taste. Preventdefault bricht nicht die event-handler alle zusammen. Aber mit Ihrem code, wenn Sie auf die maximale Länge des Feldes, der Benutzer wird nicht mehr in der Lage sein, löschen Sie alle Zeichen, da das löschen Tastendruck wird abgesagt.
Der Grund, warum es funktioniert im IE, da IE nicht Feuer das keypress-Ereignis für das löschen, Ende, enter, escape, Tasten, home, insert -, pageUp/Down und tab. In Safari den Tastencode löschen ist falsch, in der keypress-Ereignis.
Aus diesen Gründen habe ich eine zweifache Anregung; verwenden Sie zuerst das keydown-Ereignis statt, so dass Sie erhalten die richtigen Tasten.
Zweiten, Blick auf die keycode, und wenn es ist, löschen oder Rücktaste dann nicht preventDefault.
InformationsquelleAutor der Antwort Pickle
Sollte nicht
den trick tun ?
InformationsquelleAutor der Antwort Les
verwenden Sie einfach
return true;
am Ende Ihrer Event-Handler. Das würde Blase bis das event an den browser.InformationsquelleAutor der Antwort Tzury Bar Yochay
Nicht so aussieht, https://developer.mozilla.org/en/DOM/event , aber Sie können nur nicht nennen es...
InformationsquelleAutor der Antwort Kobi
InformationsquelleAutor der Antwort Jon