javascript - 文本框 JavaScript 中的 Control+退格键

标签 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 .

有什么想法吗?

最佳答案

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

$('#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+退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32003968/

相关文章:

javascript - 我什么时候需要使用 hasOwnProperty()?

javascript - 使用 YUI 在 iframe 和它的父级之间触发事件

javascript - 如何使用 jQuery/Javascript 从内存中删除对象?

javascript - 如何将下拉列表选择的值添加到数据库?

javascript - 使用 jquery 以表单形式克隆文件上传输入字段

javascript - 切换隐藏/显示 div 适用于按钮,但不适用于链接?

javascript - 动态 js 表不工作

javascript - 如何将第二个数组中的 CompletedCount 值更改为 230?

javascript - 如何在ipad上播放多种声音

html - Angular/Breeze - 无法在 HTML 文本输入中输入小数点