-1

フォーム内にテキストエリアがあります。

<textearea id="message"></textarea>

入力中、ユーザーがテキストエリア内に文字を入力するたびに、ユーザーがEnterキーまたはスペースバーを押すまで、入力したすべての文字に対して関数をトリガーしたいと思います。

jQueryまたはプレーンJSを使用してこれをどのように可能にしますか?

4

3 に答える 3

2

あなたはこれを使うことができます:

var myCallback = function () {
    //put your code here
}

(function (callback) {
    var jMessage = $('#message'),
        callbackCallable = false,
        keycodeEnter = 13,
        keycodeSpace = 32;


    jMessage.keyup(function (e) {
        var lastLetter = jMessage.val().slice(-1);
        if (lastLetter === '#') {
            callbackCallable = true;
        } else if (e.keyCode === keycodeEnter || e.keyCode === keycodeSpace) {
            callbackCallable = false;
        } else if (callbackCallable) {
            callback();
        }
    });
}(myCallback));
于 2013-01-12T00:30:43.627 に答える
0

タイピングのみを検出したい場合は、キーが押されたイベントをリッスンできます。

var anyHitYet = false;
jQuery('#massage').keydown(function (event) {

    if (anyHitYet) return;

    var key = event.keyCode;
    if (key === 51) {
        //call your function here
    } else if (key === 13 || key === 32) {
        anyHitYet = true;
    }
});

基本的に、51の場合はヒットするので、またはヒットした#場合は関数を呼び出します。 -when-pressed-functionは、もう一度作成するまで実行されません。spaceenter#anyHitYet=false

誰かが何かを貼り付けるかもしれないので、それは別の話です

于 2013-01-12T00:26:21.367 に答える
0

上記の回答がOPが望んでいることを実行するかどうかはわかりません。スペースまたはリターンが監視を終了するまで、2番目または3番目の#も監視する必要があると思います。

// have a flag somewhere and initialize it to FALSE
var doMonitor = FALSE; 

$('#message').keydown(function(event){

    // trigger monitoring after # was tipped
    // (only once till space or return reset)
    if(event.keyCode == 51 && !doMonitor){
       doMonitor = TRUE;
    }
    else if(event.keyCode == 32 || event.keyCode == 13)
       doMonitor = FALSE;
    else if(doMonitor){
        // do whatever needs to be done
    }
});

変数を使用する代わりに、#message textareaに属性を追加して削除(または値を変更)することもできます。

// for setting an attribute
.attr( attributeName, value )

// for removing it
.removeattr( attributeName )

ここhttp://api.jquery.com/removeAttr/とここhttp://api.jquery.com/attr/を見てください

于 2013-01-12T00:58:20.217 に答える