Вкл./выкл. чекбокса по событию клавиатуры
Здравствуйте.
Имеем классический чекбокс: <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, время: 05:44. |