2014-11-07 2 views
0

Я хочу вызвать ту же функцию в javascript либо при нажатии на кнопку мыши, либо нажатием клавиши (введите). Это мой код в html, но он не работает .. так могу ли я это сделать.?Вызов одной и той же функции при нажатии мыши и нажатии клавиши с помощью html и javascript

<div class="C" onclick="Cfunc()" onKeyDown="if(keycode==13)Cfunc();"> 
    <p >C</p> 
</div> 

и это мой JS код:

function Cfunc() { 
    var audio = document.getElementById("Caudio") 
    audio.play(); 
} 
+1

Как вы себе KeyDown на DIV? –

+0

Keydown на элементе работает только на области ввода или текста. Вы не можете подключиться к div, потому что, хотя вы можете видеть div, вы на самом деле не влияете на него, просто просматриваете его. Вам нужно прослушать keydown в окне onject, что можно сделать с помощью window.onkeydown = yourFunctionNameGoesHere. – AndrewTet

+0

@AndrewTet Возможно, если это [focusable] (http://www.w3.org/TR/html5/editing.html#focusable). Он может быть сконфигурирован с атрибутом ['tabindex'] (http://www.w3.org/TR/html5/editing.html#sequential-focus-navigation-and-the-tabindex-attribute), например. 'TabIndex = "- 1"'. – Oriol

ответ

1

Я хотел бы сделать это за пределами разметки, как так:

// elements 
var audio = document.getElementById("Caudio") 
var play_btn = document.querySelector('.C') 

// event handlers 
play_btn.addEventListener('click', function() { 
    audio.play() 
}) 
document.addEventListener('keydown', function (event) { 
    if (event.keyCode == 13) { 
    audio.play() 
    } 
}) 

Если вы не хотите KeyDown события, связанного с весь документ, сделайте div сфокусированным и соответствующим образом измените его.

0

Вы можете сделать это, чтобы сделать эту работу как для

<div class="C" onclick="Cfunc()" onKeyDown="Cfunc();"> 
    <p >C</p> 
</div> 

и это мой JS код:

function Cfunc(e) { 
    if(e.keycode && e.keycode!=13) 
    return; 
    var audio = document.getElementById("Caudio") 
    audio.play(); 
} 
Смежные вопросы