Когда вы используете keyup и выполняете регулярное выражение замены (другими словами, устанавливая value
), курсор будет прыгать до конца.Если ваша цель состоит в том, чтобы разрешить использование только цифровых клавиш (плюс backspace, delete), попробуйте следующее:
$("#txtlevel").bind('keydown', function(event) {
// Allow only backspace, delete, left and right arrows, return and tab
if (event.keyCode == 46 ||
event.keyCode == 8 ||
event.keyCode == 37 ||
event.keyCode == 39 ||
event.keyCode == 13 ||
event.keyCode == 9) {
// let it happen
}
else {
// stop the keypress if not a number
if (event.keyCode < 48 || event.keyCode > 57 ) {
event.preventDefault();
}
}
});
Чтобы отменить нечисловые события при вставке, привяжите его к событию paste
:
$("#txtlevel").bind('paste', function(e){
var value = $(this).val();
value = value.replace(/\D/g, ''); /* Remove any non-digit characters */
if ( value.length > 1 ) {
value = value.replace(/^[ 0]/g,''); /* Remove any leading spaces or zeros */
}
$(this).val(value);
});