2010-04-14 2 views
0

Как отключить кнопку backspace при вводе checkboxes в jQuery? Когда checkboxes сфокусированы, и я нажимаю backspace (keycode = 8), браузер считает, что я пытаюсь вернуться на страницу и использует backspace как команду history.go(-1).Как отключить backspace при установке флажков ввода в jQuery?

$("div#types input").focus(function(){ 
    window.onkeydown = function(e){ 
    return !(e.keyCode == 8); 
}; 
+0

Почему вы пытаетесь нарушить типичный шаблон пользовательского интерфейса браузера? Я горячо отвергаю то, что это необходимо, если вы не создаете чрезвычайно специализированное веб-приложение, где сочетания клавиш являются общими. – Matchu

+0

Это именно то, что я делаю. Это не веб-страница для широкой публики. Это приложение будет использоваться только на 2 компьютерах EVER и нуждается в этой функции. – sadmicrowave

ответ

4

Ну это остановит кнопку забоя в любое время от навигации обратно:

$(document).keydown(function(e) { 
    if (e.keyCode === 8) 
    { 
    return false; 
    } 
}); 

Теперь, чтобы выяснить, как запустить это только тогда, когда галочки сосредоточены ...

Edit:

Проблема с вычислением, если флажок имеет фокус, заключается в том, что он получает фокус только в том случае, если он привязан или фактически установлен в коде. Если его щелкнуть, он будет проверен, но на самом деле он не фокусируется (по крайней мере, в хроме/сафари). Все зависит от того, как вы устанавливаете фокус.

Edit 2:

Чтобы сделать свой флажок иметь фокус, когда он щелкнул, просто добавьте это:

$('input[type=checkbox]').click(function() { 
    $(this).focus(); 
}); 

... так положить все это вместе, это будет иметь флажок фокус на мыши и остановить кнопку возврата, когда флажок имеет фокус (все внутри функции $ (document) .ready, конечно):

$(document).keydown(function(e) { 
    if (e.keyCode === 8 && $('input[type=checkbox]:focus').size() > 0) 
    { 
     return false; 
    } 
}); 

$('input[type=checkbox]').click(function() { 
    $(this).focus(); 
}); 
+0

любые предложения по устранению этого? – sadmicrowave

+0

Отредактировал мой ответ. – ryanulit