Вкл./выкл. чекбокса по событию клавиатуры
Здравствуйте.
Имеем классический чекбокс: <input type="checkbox" name="urgent" value="1" onclick="this.form.invoice.focus()"> Хочу повесить на страничку скрипт который бы отмечал/снмал данный чекбокс по нажатию на определенную клавишу на клавиатуре. К примеру на "s". Ну и как всегда вопрос: how to? |
Цитата:
http://learn.javascript.ru/keyboard-events |
document.addEventListener("keydown", function (event) { if (event.keyCode == "код клавиши s") { // Ваше действие } }, false) Думаю что направление гугления задано? Читайте про события клавиатуры |
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; }); |
Всем спасибо. JS это совсем не мой профиль. Но надо. А надо, как обычно срочно, а лучше вчера.
Собственно запрос о keyboard events и привел меня на этот форум. |
С этим понятно, но как поступать со сложным чекбоксом, который активирует два инпута?
<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. |
document.addEventListener('keypress', function(e) { if(e.keyCode == 115) document.getElementsByName('urgent')[0].click(); }); |
А если по хорошему, то:
<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(); }); |
Руслан, премного вам благодарен.
Воспользовался коротким кодом. В чем разница если вкратце? |
Интересно как будет выгдядеть лейбл с мнемокодом, так наверно -
<label>Отправить инво<span style="text-decoration:underline">й</span>c</label> |
Часовой пояс GMT +3, время: 22:54. |