入力キーをフォームから送信することを止めるためのソリューションがWeb上に多数あります。最も一般的に使用する<body onkeypress = ...
入力キーの送信を停止すると、複数行のテキスト入力でEnterキーも停止する
しかし、これらは、複数行のテキストボックスで入力キーを停止するという望ましくない副作用があるようです。誰もこれを回避する方法を知っているので、Enterキーは複数行のテキストボックスでも機能しますか?
おかげで、
AJ
入力キーをフォームから送信することを止めるためのソリューションがWeb上に多数あります。最も一般的に使用する<body onkeypress = ...
入力キーの送信を停止すると、複数行のテキスト入力でEnterキーも停止する
しかし、これらは、複数行のテキストボックスで入力キーを停止するという望ましくない副作用があるようです。誰もこれを回避する方法を知っているので、Enterキーは複数行のテキストボックスでも機能しますか?
おかげで、
AJ
<script language="Javascript">
document.onkeydown = function() {
if (event.keyCode == 13) {
if (document.activeElement.tagName.toLowerCase() != "textarea") {
event.preventDefault();
return false;
}
}
}
</script>
このような何かを?
あなたは(jQueryを使って)次のことを試すことができます。
$(function(){
$('input:not(textarea)').live('keypress', function(e) {
if (e.which == 13) return false;
if (e.which == 13) e.preventDefault();
});
});
のみ入力フィールドはテキストエリアではなく、ターゲットとしています。
NON jQueryの
function disableEnterKey(e)
{
var key;
if(window.event)
key = window.event.keyCode;
else
key = e.which;
return (key != 13);
}
そして、すべてのテキスト入力
<input type="text" name="textIn" onKeyPress="return disableEnterKey(event)"/>
参考にonKeyPressイベント追加:http://www.bloggingdeveloper.com/post/Disable-Form-Submit-on-Enter-Key-Press.aspx
返信いただきありがとうございますが、私は本当に非jqueryソリューションを好むでしょう。 –
非jqueryソリューションの私の更新答えを参照 –
JQueryを使用しないように私の答えを編集しました。 – Jules
これはうまく見えますが、activeElementとクロスブラウザのサポートに問題がある可能性があります。 –
document.activeElementは、IE6 +、FF3 +、Safari 4以上、Opera 9以上、Chrome 9以上でサポートされています。 – Jules