JavaScriptでのpreventDefault()の逆の機能はありますか?
-
18-09-2019 - |
質問
私は、テキストフィールド内の単語をカウントしていますし、言葉の一定量の後、私はデフォルトのを防ぐために使用します。他では、私は、デフォルトのコマンドを再度有効にしたいと思います。
preventDefault(
)反対の機能を持っていますか?
ここではいくつかのサンプルコードは、次のとおりです。
<!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>
IEで動作するようだが、Firefoxはそれが好きではありません。
解決
私はあなたが持っている問題は、あなたが削除キーを探していないことだと思います。 preventDefaultは、すべて一緒にイベントハンドラをキャンセルしません。あなたは、フィールドの最大長を襲った後、削除キー操作がキャンセルされているので、しかし、あなたのコードで、ユーザーは、もはや任意の文字を削除することはできません。
IEは、ファンクションキー、ホーム、挿入、PageUpキー/ダウンとタブを、削除、終了用のキープレスイベントを発生入力し、エスケープしていないため、それはIEで動作する理由があります。サファリでは、削除のためのキーコードは、キープレスイベントで間違っています。
私は二重の提案を持っているこれらの理由から、あなたは正しいキーコードを取得するようにするために、最初に、代わりのKeyDownイベントを使用します。
第二に、キーコードを見て、それが削除またはバックスペースであるならば、しないでpreventDefaultます。
if ((event.keyCode != 46 && event.keyCode != 8) || input_length > (wordNum - 1)) {
return false;
} else {
return true;
}
他のヒント
べきではない。
if maxwords
preventDefault
else
return true
トリックを行う?
単にあなたなeventHandlerの終わりにreturn true;
を使用しています。これは、ブラウザにバブルアップイベントをでしょう。
それのように見えない、 https://developer.mozilla.org/en/ DOM /イベントに、しかし、あなたはそれを呼び出すことはありませをちょうどすることができます。 ...
$("#delete_button").click(function(e){
var category = $("#category").val();
var answer = confirm("Are you sure you would like to delete the " + category + " category?");
if (!answer)
e.preventDefault();
});