2013-09-13 4 views
0

я это немного HTMLStopPropagation событий клавиатуры

<input id="legalWellName" readonly data-bind="value: LEGAL_WELL_NAME" class="welllabel" /> 

и этот сценарий:

$('#legalWellName').keyup(function (e) { 
    if (e.stopPropagation) { e.stopPropagation(); } 
    if (e.cancelBubble != null) { e.cancelBubble = true; } 
}); 
$('#legalWellName').keydown(function (e) { 
    if (e.stopPropagation) { e.stopPropagation(); } 
    if (e.cancelBubble != null) { e.cancelBubble = true; } 
}); 
$('#legalWellName').keypress(function (e) { 
    if (e.stopPropagation) { e.stopPropagation(); } 
    if (e.cancelBubble != null) { e.cancelBubble = true; } 
}); 

Однако, если я нажимаю на вход legalWellName и ударил BACKSPACE, он действует, как если бы я нажмите BACK в браузере (IE9). Есть что-то особенное в BACKSPACE? Я уже установил readonly, так что никакие другие клавиши не имеют никакого эффекта (мне даже не нужна логика stopPropagation). Как я могу помешать BACKSPACE вступить в силу?

+1

Вы можете попробовать с 'e.preventDefault()' и для IE 'e.returnValue = false'. – Teemu

+0

@Teemu - Это сработало для меня. если вы хотите поместить это в форме ответа, я помечаю его как принятый. –

+0

Я сделал комментарий как ответ, но мне просто интересно, в какой ситуации IE переадресовывается при попадании в «Backspace»? Это не должно, когда «вход» имеет фокус. Хотя я видел это в jsbin. – Teemu

ответ

1

Предотвращение барботажа предотвращает событие пузыря от элемента к другому в DOM. Похоже, вы хотели бы хотели, чтобы предотвратить действие по умолчанию Backspace:

if (e.preventDefault) { 
    e.preventDefault(); 
} 
e.returnValue = false; 

Обратите внимание, что вы можете смело добавить свойство e без обнаружения признаков.

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