0

印刷できない文字が押されると、 let's say for CTRL=17 with "[CTRL]"に置き換えられます。ここにコードの例があります

$('#textbox1').keyup(function (event) {
    if (8 != event.keyCode) {
       if(17==event.keyCode){
        $('#textbox1').val($('#textbox1').val()+"[CTRL]")
        $('#textbox2').val($('#textbox1').val());
       }else{
        $('#textbox2').val($('#textbox1').val());
       }

    } else {

        $('#textbox2').val($('#textbox1').val());
    }
});

問題は、ユーザーがバックスペースを押したときに、2 番目の入力が最初の入力の内容を反映する必要があるため、他の文字と同様に「[CTRL]」を一度に削除する必要があることです。

4

3 に答える 3

1

keydown入力フィールドの最後の文字をチェックインできます。の場合]は、右から最後に見つかった左ブラケットまでのすべてを削除できます[。残念ながら、カーソルが 内にある場合、これは機能しません'[ ]'

$('#textbox1').keydown(function(event) {
    if(8 == event.keyCode) {
        var element = $(this),
            value = element.val(),
            lastChar = value.slice(-1);

        if(lastChar == ']') {
            var lastIndex = value.lastIndexOf('['),
                index = value.length - lastIndex;

            element.val(value.slice(0, -index) + "]");
        }
    }
});

フィドル

于 2014-06-04T06:41:06.007 に答える
1

いつでも正規表現を使用できます。

$('#textbox1').keydown(function(event) {
    if(8 == event.keyCode) {
        var el = $(this);
        el.val(el.val().replace(/\[(CTRL|ALT|SHIFT)\]$/,' '));
    }
});

フィドル

編集:abhitalksコードと組み合わせる

于 2014-06-04T07:01:36.267 に答える