按键事件与点击事件

时间:2017-01-03 17:00:19

标签: javascript jquery events jquery-ui-autocomplete screen-readers

我的眼睛被摧毁了,所以这个问题将特定于键盘事件。

当我为按钮的click事件定义处理程序时,如下所示:

$("#button").on("click", function() {
    alert("clicked");
});

由于我无法使用鼠标(我认为大多数Web应用程序都使用click事件来执行html元素),我通过转到按钮并按Enter键来测试此事件。该事件已成功解雇。从那以后,我开始相信按下回车键会将点击事件模拟为html元素。我一直在执行提交按钮很多次,所以没有理由相信情况并非如此。

现在,我正在创建一个文本框,需要在访问时填充值。所以我这样做了:

$("#text").on("click", function() {
    alert("clicked");
});

但是,按Enter键不再有效,不会显示任何值。但是当其他人使用鼠标点击元素时,事件会成功触发。

以下是我正在处理的代码:

我正在使用jquery-ui的自动完成功能。我希望当用户进入文本框时填充文本框。我按回车进去...

$( "#tags" ).autocomplete({
    source: names,
    minLength: 0,
    select: function( event, ui ) {
        var index = names.indexOf($(this).prop("value"));
        $(this).val("");
        $("#selected").append("<li>"+names[index]+
        "<input type='hidden' id='id' value='"+ids[index]+"'/>"+
        "<a href=''>remove</a></li>");
        ids.splice(index, 1);
        names.splice(index, 1);
        return false;
    }
}).on("click", function(event) {
    $(this).autocomplete("search", $(this).val());
});

按Enter和鼠标点击确实有区别吗?我该怎么办?

2 个答案:

答案 0 :(得分:1)

捕获按键事件并测试'enter'是解决此问题的最佳方法。没有这个按钮执行的原因是因为它们属于'submit'类型。

答案 1 :(得分:1)

基本上,在编辑框上触发onClick并不是一个好主意,因为如果没有更多的努力,您将无法通过这种方式获得键盘替代方案。
因为你像我一样盲目(我想你的问题),你可能正在使用一些屏幕阅读软件。在屏幕阅读器中,Enter通常模拟鼠标点击但是。但是,例如,JAWS for Windows增加了更多的灵活性,允许您在按下Enter键时调整操作:模拟鼠标单击或将Enter发送到系统。
因此,在您的情况下,我会创建一个按钮来触发您的onClick事件。