嘿伙计们,我正在努力为我的功能组合点击和按键,但到目前为止我没有尝试过的任何东西似乎都有效。 这是我的代码:
function victoryMessage() {
$(document).off("keyup", handleKeyUp);
$('#feedback').append("Bravo!<br><br><div id='replay' class='button'>Nastavi</div>");
$('#replay').on("click",function () {
if(questionBank.length>3) {
gameScreen();
}
else {
finalPage();
}
});
$(document).off("tap", keepFocus).trigger("tap");
}
到目前为止,我已尝试过以下内容:
$("#replay").on("click keyup", function (e) {
if (e.type == "click" || e.keyCode == 13) {
if(questionBank.length>0) {
gameScreen();
}
else {
finalPage();
}
}
});
和
var callback = function() {
if(questionBank.length>0) {
gameScreen();
}
else {
finalPage();
}
};
$("#replay").keypress(function() {
if (event.which == 13) callback();
});
$('#replay').click(callback);
和
$(document).on("keypress", function(e){
if (e.which == 13) {
testKey();
}
});
我也尝试过其他一些东西,但似乎没有任何效果。在这里链接,以便您查看我的完整代码http://www.wpacademy.nextweb.space/TestingMobile/
编辑:澄清当Andy说我希望点击时只需点击重播按钮就可以注册,输入键可以在文档中的任何位置按下时进行注册。
答案 0 :(得分:3)
从我的测试中你不能直接按下按钮,所以可能的解决方案如下
当用户在屏幕上的任意位置按Enter键时,请使用您的函数调用替换alert。
$(document).keypress(function(e) {
if(e.which == 13) {
alert('You pressed enter!');
}
});
$("#replay").on("click", function(){
function call
});
另外,为了避免代码一直在按键事件中运行,您可以检查屏幕上是否存在特定元素,如重播按钮。
希望有所帮助
答案 1 :(得分:3)
我认为这就是你所追求的。您希望单击仅在单击重播按钮时进行注册,并在按下文档中的任何位置时按Enter键进行注册。
$(document).on("click keypress", function (e) {
if (e.type === "click" && e.target && e.target.id === "replay") {
e.preventDefault();
$("#output span").html("click happened");
} else if (e.type === "keypress" && e.keyCode === 13) {
e.preventDefault();
$("#output span").html("enter key anywhere within document happened");
}
});
&#13;
#output {
margin-top: 1em;
padding: 0.5em 0.5em 0;
border: 2px dashed gray;
width: 300px;
display: block;
height: 50px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="replay">replay button</button>
<div id="output">Event type: <span></span></div>
&#13;
答案 2 :(得分:1)
由于元素是通过JS创建的,因此将点击处理程序分配给document
并将其推迟到#replay
。而且我不确定您打算如何在keyup
上抓取div
,但如果您在contenteditable
上设置div
,则可以双击文字,然后键入它以显示正在捕获的两个事件。这是一个codepen http://codepen.io/anon/pen/RpGEWK
$('#feedback').append("Bravo!<br><br><div id='replay' class='button' contenteditable>Nastavi</div>");
$(document).on("click keyup", "#replay", function(e) {
console.log(e);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="feedback"></div>