2015-08-14 5 views
1

У меня есть требование наличия текстового поля со значением по умолчанию «PF_». Если я что-то напечатаю и нажмите Ctrl + Backspace Все значения будут удалены. Эта проблема возникает только тогда, когда у меня есть символ подчеркивания «_» в конце.Control + backspace в текстовом поле javascript

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.

Любая идея?

+0

Try 'keydown' нажатие вместо' нажатие клавиши, keydown'. – RRK

+0

Тот же результат @RejithRKrishnan – Sri

+0

Тот же результат с пробелом. – ebilgin

ответ

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); 
}); 

Edit: в ответ на комментарии 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

+0

Ницца. Но этого я не искал. Я не хочу предыдущее значение при управлении + bkspce. Значения должны быть удалены. – Sri

+0

Отредактировал свой ответ; это новая скрипка, что вы хотите ?: http://jsfiddle.net/2hx7dak0/18/ – user156213

+0

Отредактировано снова, это может быть лучше: http://jsfiddle.net/2hx7dak0/20/ – user156213

0

Это, как я хотел бы сделать это:

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

Here is the JSFiddle demo

Смежные вопросы