我有一个默认值为“ PF_”的文本框的要求。如果我键入内容并按Ctrl + Backspace,则所有值都将被删除。仅当我在结尾处使用下划线“ _”时,才会出现此问题。

Java脚本

var readOnlyLength = $('#field').val().length;
$('#output').text(readOnlyLength);
$('#field').on('keypress, keydown', function (event) {
    var $field = $(this);
    $('#output').text(event.which + '-' + this.selectionStart);
    if ((event.which != 37 && (event.which != 39)) && ((this.selectionStart < readOnlyLength) || ((this.selectionStart == readOnlyLength) && (event.which == 8)))) {
        return false;
    }
});


HTML

<input id="field" type="text" value="PF_" size="50" />


我已经尝试过样本fiddle

任何想法?

最佳答案

我不确定这是您要执行的操作,但是如果用户尝试修改只读部分,这会将字段重置为先前的值:

$('#field').on('keypress, keydown', function (event) {
    var $field = $(this);
    var old = $field.val();
    setTimeout(function(){
        if($field.val().slice(0,3)!='PF_') {
            $field.val(old);
        }
    },0);
});


编辑:为回应op的评论,请尝试以下代码:

$('#field').on('keypress, keydown', function (event) {
    var $field = $(this);
    if(event.ctrlKey && event.which==8) { // ctrl-backspace
        $field.val('PF_');
        return false;
    }
    var old = $field.val();
    setTimeout(function(){
        if($field.val().slice(0,3)!='PF_') {
            $field.val(old);
        }
    },0);
});


Fiddle

关于javascript - 文本框JavaScript中的Control + Backspace,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32003968/

10-12 12:35