3

私は学習を目的としたプロジェクトに取り組んでおり、JavaScriptをできるだけ多く学習するために、これまでjQueryを避けています。onkeypressを使用して、テキストボックスまたはテキストエリアでEnterキーが押されたかどうかを判断できましたが、Webサイトに検索バーを追加した後、onkeypressなどのイベントがグローバルであることがわかりました(つまり、検索バーでEnterキーを押すと送信がアクティブになります)メッセージのテキストエリア)。

私もAJAXを使用しているので、単純なフォーム送信は必要ありません。また、複数行の後にあるので(より多くのテキストが表示されるように)、textareaを使用したいと思っています。

これらの制約の下で、これはjQueryを使用せずに行うのが合理的ですか?もしそうなら、どうすればそれを行うことができますか?このサイトの他の回答は、単にjQueryを指しています。

ありがとう、

パラゴン

編集:私はコードを求められたので、ここに関連するHTMLとJavaScriptがあります。入力の1つは次のとおりです。

<input type="text" id="search" name="search" onkeypress="return activate(event, this.value);"/>

これに付随するJavaScriptは次のとおりです。

function activate(e, message)
{   
    if (isNotEnter(e))
    {   
        return true;
    }   
    else // ie. enter was pressed
    {   
        // only proceed to search() if message is not empty
        if (message.length >= 1)
        {   
            search();
        }   
        return false;
    }   
}

そして関数isNotEnter():

function isNotEnter(e)
{   
    if (e.keyCode == 13) 
    {   
        return false;
    }   
    else
    {   
        return true;
    }   
}
4

2 に答える 2

3

jqueryを使用する必要があります。これは、jqueryが素晴らしく、習得が容易で、ブラウザーの問題を取り除くなどの理由からです。

あなたが完全にそれに反対しているなら、それは純粋なJSで行うことができます。コードを表示すると便利ですが、入力にバインドする必要があるときに、onkeypressイベントをドキュメントにバインドしている可能性があります。

$("#search").keypress(function()
{
//do function here, use this to refer to the element
});
于 2011-04-04T23:57:59.230 に答える
3

document特に入力要素ではなく、でキーイベントをキャプチャしているように聞こえます。

したがって、のようなものを見つけてdocument.onkeypress = function() { ... }、に置き換えdocument.getElementById('your-input').onkeypress = function() { ... }ます。

そのコードが見つからない場合は、を使用している可能性があるaddEventListenerため、document.addEventListener('keypress', function() { ... }, false);

アップデート

インラインイベントハンドラーを避けたい。GoogleaddEventListener()attachEvent() (そして、<IE9が必要な理由もわかります)。

また、一般的に、例のように、関数に何かを否定するものとして名前を付けたくはありませんisNotEnter()。関数を反転して呼び出す必要があります。これisEnter()により、否定演算子を使用できます。たとえば、は入力されません! isEnter()

于 2011-04-04T23:59:55.470 に答える