文本框中的 Control+退格键 javascript
Control+backspace in textbox javascript
我需要一个默认值为 "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").keyup(function(e){
if($(this).val().length < 3){
$(this).val("PF_");
}
});
我不确定这是否是您想要的,但是如果用户尝试修改只读部分,这会将字段重置为之前的值:
$('#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);
});
我需要一个默认值为 "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").keyup(function(e){
if($(this).val().length < 3){
$(this).val("PF_");
}
});
我不确定这是否是您想要的,但是如果用户尝试修改只读部分,这会将字段重置为之前的值:
$('#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);
});