1

ユーザーが入力したときにテキストボックスからテキストを取得しようとしています。これにより、ユーザーがコマンドを入力したときに、テキストを解析してそれに応じて情報を表示できます。ただし、私が書いている関数は、文字がテキストボックスに入力される前に、ボックスからテキストを取得しているように見えます。入力した文字を入力する前に、関数がテキストボックスからコンテンツを取得しないようにするにはどうすればよいですか?キーのIDを取得し、それに応じて入力された文字列を変更することを検討しましたが、もっと良い方法があるはずだと思います。

コード:

$('#inputConsoleForm').keydown(function(event){
    //Get key code
    var code = (event.keyCode ? event.keyCode : event.which);
    //Get console text (doesn't behave as expected)
    var consoleCommand = document.inputConsoleForm.console.value;

    function parseConsoleCommand(consoleCommand) {
        /* Returns true if command is valid*/
    }
    if(code === 13) {
        event.preventDefault();
        if(!parseConsoleCommand(consoleCommand))
            alert("INVALID COMMAND LINE");
        else
            attemptExecute();//Runs the command
    }
    if(code === 32 || (code >= 48 && code <= 123) || code === 61 || code === 109 || code === 188 || code === 8) {
        if(parseConsoleCommand(consoleCommand)){
            $(document.inputConsoleForm.console).css("background-color", "#FFDFDF");
        }
        else{
            $(document.inputConsoleForm.console).css("background-color", "");
        }
    }
});
4

2 に答える 2

2

HTML5 イベントを使用できます( IE < 9inputのイベントにフォールバックします)。propertychangeこれを行う方法を詳しく説明する2つの回答を次に示します。

于 2012-06-20T21:17:11.280 に答える
1

私が言う最良の結果を得るには、「変更」を使用してください。引き続き keydown (または keyup) を使用できますが、押されているキーをイベント オブジェクトから取得し、テキスト文字列に追加する必要があります。

于 2012-06-20T21:14:25.673 に答える