Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вкл./выкл. чекбокса по событию клавиатуры (https://javascript.ru/forum/misc/51899-vkl-vykl-chekboksa-po-sobytiyu-klaviatury.html)

SLASH_id 24.11.2014 14:53

Вкл./выкл. чекбокса по событию клавиатуры
 
Здравствуйте.

Имеем классический чекбокс:
<input type="checkbox" name="urgent" value="1" onclick="this.form.invoice.focus()">


Хочу повесить на страничку скрипт который бы отмечал/снмал данный чекбокс по нажатию на определенную клавишу на клавиатуре. К примеру на "s".

Ну и как всегда вопрос: how to?

ksa 24.11.2014 15:14

Цитата:

Сообщение от SLASH_id
Ну и как всегда вопрос: how to?

Ответ, как всегда, в букваре...
http://learn.javascript.ru/keyboard-events

tsigel 24.11.2014 15:16

document.addEventListener("keydown", function (event) {

  if (event.keyCode == "код клавиши s") {
    // Ваше действие
  }

}, false)


Думаю что направление гугления задано?
Читайте про события клавиатуры

ruslan_mart 24.11.2014 15:16

var checkbox = document.getElementsByName('urgent')[0];

document.addEventListener('keypress', function(e) {
    if(e.keyCode == 115) checkbox.checked = !checkbox.checked;
});


или

document.addEventListener('keypress', function(e) {
    if(e.keyCode == 115) document.getElementsByName('urgent')[0].checked ^= 1;
});

SLASH_id 24.11.2014 15:38

Всем спасибо. JS это совсем не мой профиль. Но надо. А надо, как обычно срочно, а лучше вчера.

Собственно запрос о keyboard events и привел меня на этот форум.

SLASH_id 24.11.2014 15:45

С этим понятно, но как поступать со сложным чекбоксом, который активирует два инпута?
<input type="checkbox" name="bigbox" value="1" onclick="if(this.checked){ldelim}this.form.weight.disabled = false; this.form.units.disabled = false; this.form.weight.focus();{rdelim} else {ldelim}this.form.weight.disabled = true; this.form.units.disabled = true;{rdelim}">


Сделал по аналогии, чекбокс чекается, но инпуты остаются disabled.

ruslan_mart 24.11.2014 15:49

document.addEventListener('keypress', function(e) {
    if(e.keyCode == 115) document.getElementsByName('urgent')[0].click();
});

ruslan_mart 24.11.2014 15:53

А если по хорошему, то:

<input type="checkbox" name="bigbox">



var checkbox = document.getElementsByName('bigbox')[0];

checkbox.addEventListener('click', function() {
    this.form.weight.disabled = this.form.units.disabled = !this.checked;
    
});

document.addEventListener('keypress', function(e) {
    checkbox.click();
});

SLASH_id 24.11.2014 16:04

Руслан, премного вам благодарен.
Воспользовался коротким кодом.
В чем разница если вкратце?

kostyanet 25.11.2014 09:00

Интересно как будет выгдядеть лейбл с мнемокодом, так наверно -

<label>Отправить инво<span style="text-decoration:underline">й</span>c</label>


Часовой пояс GMT +3, время: 22:54.