1

テキストボックスから入力を送信するために、キャリッジリターンを処理するためのクロスブラウザソリューションを探しています。

私の現在の問題はFirefoxです...

javascriptイベントが定義されていません

<input id="myinput" type="text" onkeydown="press();" value="X"/>

<script type="text/javascript">
function press() {
    if (event.keyCode == 13) {
    // do something
    }
}
<script>

jqueryを使用できます。

4

4 に答える 4

9

どこeventから来たの?:-)

これがあなたが探している解決策です:

// First, change the HTML to:
<input id="myinput" type="text" onkeydown="return press( event );" value="X" />

// Then, on the JS part:
function press( e ) {
    var evt = e || window.event
    // "e" is the standard behavior (FF, Chrome, Safari, Opera),
    // while "window.event" (or "event") is IE's behavior
    if ( evt.keyCode === 13 ) {
        // Do something

        // You can disable the form submission this way:
        return false
    }
}

この関数とHTMLイベントを使用して、フォームが送信されないようにすることに注意してくださいreturn(これは、フォームのフィールドで[Enter]を押したときのデフォルトの動作です)。

ただし、HTMLのjavascript部分を削除して、次の手順を実行することをお勧めします。

document.getElementById('myinput').onkeydown = function( e ) {
    // Your code
}

これにより、控えめなJavaScriptを使用できます

jQueryの方法の場合、これは次のようになります。

$('#myinput').on( 'keydown', function( e ) {
    // jQuery normalizes the "e" parameter, so you can use:
    if ( e.keyCode === 13 ) {
        // Do something
    }
} )

PS:eventは実際にはと同じwindow.eventです。これはIEの正しい使用法です。ただし、これは他のブラウザ(FF、Chrome ...)が使用する標準ではありません。var evt = e || window.eventこれが、提供されたトリック( 、e引数として渡された場所)を使用する理由です。

于 2012-04-17T08:47:18.833 に答える
1

まず、eventFF / Chrome / Opera/..で使用するために関数定義関数呼び出しで定義する必要があります。(onkeydown

HTML:

<form method="POST" action="/">
<input id="myinput" type="text" onkeydown="return press( event )" value="X"/>
</form>

JavaScript:

function press(e) {
    // IE uses "window.event", others pass the event as argument
    var evt = e || window.event;
    if (evt.keyCode == 13) {
        // do something
        alert("enter!");

        return false;
    }
}

HTMLマークアップのreturn関数定義関数呼び出しの両方での使用に注意してください。これにより、フォームが送信されなくなります。これは、フォーム内の入力でEnterキーを押したときのデフォルトの動作です。

于 2012-04-17T08:58:54.780 に答える
0
$('#myinput').keypress(function(e){
      if(e.which == 13){
         //do something.
         e.preventDefault();
       }  
});
于 2012-04-17T08:49:47.720 に答える
0

関数に渡されるイベントパラメータを宣言する必要があります。

function press(event) {
    if (event.keyCode == 13) {
    // do something
    }
}
于 2012-04-17T08:49:52.937 に答える