在文本框javascript中控制+退格

时间:2015-08-14 06:52:46

标签: javascript jquery html textbox

我要求有一个默认值的文本框说" PF _"。如果我输入内容并按control + backspace所有值都已删除。仅当我有下划线时才会出现此问题" _"在末尾。

的Javascript

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

任何想法?

2 个答案:

答案 0 :(得分:1)

我不确定这是否是你所追求的,但如果用户试图修改只读部分,这会将字段重置为之前的值:

$('#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

答案 1 :(得分:0)

我就是这样做的:

$("#field").keyup(function(e){
    if($(this).val().length < 3){
        $(this).val("PF_");
    }
});

Here is the JSFiddle demo

相关问题