看来这是JQuery UI 1.9.0中的一项新功能,因为我之前多次使用过JQuery UI,并且此文本从未弹出过。
在API文档中找不到任何相关内容。
因此,使用带有本地源的基本自动完成示例
$( "#find-subj" ).autocomplete({
source: availableTags
});
当搜索匹配时,将显示以下相关帮助器文本:
“有1个结果可用,使用上下箭头键进行导航。”
我如何以一种不错的方式禁用它,而不是通过使用JQuery选择器将其删除。
看来这是JQuery UI 1.9.0中的一项新功能,因为我之前多次使用过JQuery UI,并且此文本从未弹出过。
在API文档中找不到任何相关内容。
因此,使用带有本地源的基本自动完成示例
$( "#find-subj" ).autocomplete({
source: availableTags
});
当搜索匹配时,将显示以下相关帮助器文本:
“有1个结果可用,使用上下箭头键进行导航。”
我如何以一种不错的方式禁用它,而不是通过使用JQuery选择器将其删除。
Answers:
我知道这已经被接受了,但是只想举一个实现示例:
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++"
];
$("#find-subj").autocomplete({
source: availableTags,
messages: {
noResults: 'no results',
results: function(amount) {
return amount + 'results.'
}
}
});
source: availableTags
?我删除了它,但仍然没有消息。
availableTags
可能是一个包含url到单词映射的JSON对象的本地变量,[{ '/tag/cats': 'Cats', etc... }]
因此,当用户键入Ca
Cats时,将在下拉列表中显示,并且在选择或单击时,可以使用url填充隐藏字段。
这用于可访问性,一种简单的隐藏方法是使用CSS:
.ui-helper-hidden-accessible { display:none; }
或(请参见下面的丹尼尔评论)
.ui-helper-hidden-accessible { position: absolute; left:-999em; }
left: -9999px
,您还可以使用left: 200%
(200%与100%只是为了解决所有可能的浏览器怪癖,而其中100%并不能完全消除它)。
此处的最佳答案可实现所需的视觉效果,但击败了具有ARIA支持的jQuery对象,并且对依赖它的用户有些反感!那些曾经提到过jQuery CSS为您隐藏的人是正确的,这是这样做的样式:
.ui-helper-hidden-accessible {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
将其复制到样式表中,而不要删除消息,请:)。
clip
属性,因为该属性现已过时-请参阅developer.mozilla.org/en-US/docs/Web/CSS/clip
根据这个博客:
现在,我们使用ARIA实时区域来宣布结果何时可用以及如何浏览建议列表。可以通过messages选项配置公告,该选项具有两个属性:noResults用于不返回任何项目时的结果和noResults至少用于返回一个项目时的结果。通常,仅当您希望使用其他语言编写字符串时,才需要更改这些选项。当我们致力于为所有插件的字符串处理和国际化提供完整的解决方案时,消息选项可能会在将来的版本中更改。如果您对邮件选项感兴趣,我们建议您阅读源代码。相关代码位于自动完成插件的最底部,只有几行。
...
那么,这如何应用于自动完成小部件?好吧,现在当您搜索一个项目时,如果您安装了屏幕阅读器,它将读取类似“ 1个结果可用,使用向上和向下箭头键进行导航”的信息。太酷了吧?
因此,如果您转到github并查看自动完成源代码,在571行附近,您将看到它的实际实现位置。
由于出于可访问性原因而存在于此,最好用CSS将其隐藏。
但是,我建议:
.ui-helper-hidden-accessible { position: absolute; left: -9999px; }
而不是:
.ui-helper-hidden-accessible { display:none; }
因为前者会将该项隐藏在屏幕外,但仍允许屏幕阅读器阅读,而display:none
事实并非如此。
left: -9999px
,而是使用left: 200%
(200%与100%只是为了解决所有可能的浏览器怪癖,而其中100%并不完全脱离屏幕)。
好吧,这个问题有点老了,但是当包含相应的css文件时,文本根本不会显示:
<link
rel="stylesheet"
href="http://code.jquery.com/ui/1.9.0/themes/YOUR_THEME_HERE/jquery-ui.css" />
当然,您必须插入一个实际的主题,而不是YOUR_THEME_HERE
例如“平滑”
在脚本中自动完成之后立即添加此代码会将烦人的帮助程序推离页面,但是使用屏幕阅读器的人仍将受益于此:
$(document).ready(function() { //pushing the autocomplete helper out of the visible page
$(".ui-helper-hidden-accessible").css({"position": "absolute", "left":"-999em"}) //{"display","none"} will remove the element from the page
});
我不喜欢用JS操作CSS,但在这种情况下,我认为这是有道理的。JS代码首先创建了问题,该问题将在同一文件下面的几行中得到解决。IMO比在单独的CSS文件中解决问题要好得多,其他人可能不知道为什么以这种方式修改.ui-helper-hidden-accessible类,因此可能会对其进行编辑。
left: -9999px
,而是使用left: 200%
(200%与100%只是为了解决所有可能的浏览器怪癖,而其中100%并不完全脱离屏幕)。