0

HTMLページのGoogleChromeにテキストエリアがあります。ユーザーインターフェイスが明らかに隠されているため、バージョンはわかりませんが、ChromeではonChange = "code"イベントが発生しませんが、Firefox 11.0 1.0(助けるために->約)それは発砲しています。次に、少なくとも1つのイベントを確実にキャプチャするために、代わりにonkeydown = "same_function()"、onpaste = "same_function()"、およびoninput = "same_function()"のイベントを試してみます。しかし、問題は、取得するイベントが多すぎることです。keydownイベントを取得した後、textareaのtextarea_dom_object.valueを確認すると、押されたキーが読み取っている値に含まれていません。テキストフィールドに「abc」があり、「d」を押すと、キーが押された状態になりますが、「

テキストエリアが変更されるたびにイベントを取得するための互換性のある方法、または少なくともほとんどのブラウザで機能する方法はありますか?ただし、できれば1つのイベントのみですか?すでにイベントなどを聞いたことがあるかどうかを最初にテストする必要がある場合に作成しなければならないような醜いコードは好きではありません。テキストエリアのテキストが変更されるたびに1つのイベントが必要です。

4

2 に答える 2

1

これが、jQueryが非常に優れている理由です。新しい機能をサポートしていないブラウザ間でコードを適切に劣化させる必要があることを理解しています。JavaScript自体は、このサポートをスタンドアロンで提供していません。jQueryを使用する際のJavaScriptのコア機能を強化することにより、一般的にクロスブラウザーのサポートでより成功するでしょう。

そうは言っても...

期待される操作を実行できるように、使用しているデバイス/ブラウザーを特定する必要があるシナリオはまだたくさんあります。

覚えておくべき最も重要なことは、100%クロスサポートライブラリが存在しないということです。

于 2012-04-22T17:42:10.600 に答える
1

あなたはこれを行うことができます。textareaにidタグを付けるようにしてください

$(document).ready(function(){
        $('.addtitle').keyup(function(event) {
            if(event.keyCode==13) { 

}
});
});

私の場合、ここでは、Enterキーで関数を起動します(Facebookの関数など)。

編集:また、ページに複数のテキストエリアがある場合は、次のようにする必要があります。

$(document).ready(function(){
        $('textarea[name=mynamevalue]').keyup(function(event) {
            if(event.keyCode==13) { 

}
});
});
于 2012-04-22T18:04:09.540 に答える