1

画像の名前をキャプチャする入力(フォーム外)があります。ユーザーは新しい名前を入力してEnterキーを押す必要があります。Ajaxコールバックは画像​​の名前を変更します。これは機能します。

ユーザーがエスケープ(#27)を押したときに入力コンテンツを「リセット」する機能を追加したいと思います。しかし、入力の値を自分の値で埋めることができません。

コードは

<input id="escapeInput" value="this is test" /> <input type="button" id="setDetaultToEscapeInput" value="Set default" />

jQuery(document).ready(function() {
    jQuery("#escapeInput").keydown(function(evt) {
        if (evt.keyCode == 27) {
            var input = jQuery(this);
            input.val('some default value') // doesn't work
            input[0].value = 'some default value 2'; // doesn't work
            input.parent().append('changed');
        }
    });
    jQuery("#setDetaultToEscapeInput").click(function() {
        var input = jQuery("#escapeInput");
        input.val('some default value') // works ok
    });
});

興味深いのは、たとえば「A」文字をテストすると(if(evt.keyCode == 65))、コードが機能することです。それをどのように扱うかについて何か考えはありますか?FFだけでは動作しません(OperaとIE8はOKです)。

4

2 に答える 2

2

代わりに keyup イベントを使用してみてください。

$(function() {
    $("#escapeInput").keyup(function(e) {
        if (e.keyCode == 27) {
            $(this).val("some default value");
        }
    });
});
于 2009-08-10T09:49:21.460 に答える
0

これを試して

$(document).ready(function () {
    $("#escapeInput").keypress(function (evt) {
        var keycode = null;
        if (evt.keyCode) {
            keycode = evt.keyCode;
        } else {
            keycode = evt.which;
        }
        if (keycode == 27) {
            $(this).val("some default value");
        }
    });
});
于 2009-08-10T10:14:10.520 に答える