Как отключить возврат, когда флажки ввода сосредоточены в jQuery? - PullRequest
0 голосов
/ 14 апреля 2010

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

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

1 Ответ

4 голосов
/ 14 апреля 2010

Что ж, это будет постоянно останавливать кнопку возврата назад:

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

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

Edit:

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

Редактировать 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();
});
...