jquery-ui自动完成选择菜单html实体(符号和引号)
jquery ui autocomplete select menu html entities (ampersand and quotes)
我正在尝试获取html实体,如&和引号"以显示在jquery ui自动完成菜单中。
我可以覆盖_renderItem方法来修复菜单中的显示,但当选择一个项目时,编码字符仍然出现在输入中
我该如何修复输入字段中的显示?
看看这把小提琴http://jsfiddle.net/Gq2F6/2/
感谢
js代码:
var autocomplete_items = [{label:'fish & chips',value:'fish&chips',id:'01'},{label:'food',value:'food',id:'02'}];
var $keywords = $('#keywords');
$keywords.autocomplete({
minLength:2,
source: autocomplete_items
});
$keywords.data("autocomplete")._renderItem = function (ul, item){
return $("<li></li>").data("item.autocomplete", item).append($("<a></a>").html(item.value)).appendTo(ul);
};
试试这个:http://jsfiddle.net/Gq2F6/4/
var autocomplete_items = [{label:'fish & chips',value:'fish&chips',id:'01'},{label:'food',value:'food',id:'02'}];
var decodeEntities = (function() {
// this prevents any overhead from creating the object each time
var element = document.createElement('div');
function decodeHTMLEntities (str) {
if(str && typeof str === 'string') {
// strip script/html tags
str = str.replace(/<script[^>]*>(['S's]*?)<'/script>/gmi, '');
str = str.replace(/<'/?'w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
element.innerHTML = str;
str = element.textContent;
element.textContent = '';
}
return str;
}
return decodeHTMLEntities;
})();
var $keywords = $('#keywords');
$keywords.autocomplete({
minLength:2,
source: autocomplete_items,
select: function (e, ui) {
$keywords.val(decodeEntities(ui.item.value));
return false;
}
});
$keywords.data("autocomplete")._renderItem = function (ul, item){
return $("<li></li>").data("item.autocomplete", item).append($("<a></a>").html(item.value)).appendTo(ul);
};
它使用自动完成的select事件来覆盖当您单击某个返回项目时发生的情况。它不只是将值默认复制到输入字段,而是首先对HTML实体进行解码。(当您可能有不可信的数据时,最好像这样解码实体,而不是使用jQuery的.text())。
相关文章:
- 在.csv文件中写入学位符号
- 使用相同的数据集绘制各种符号
- 将带点符号的属性(有时)传递给函数
- RegEx JavaScript:数字后的符号提取
- 微风得到的是实体而不是对象的集合
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 如何在计算器符号为零时替换它
- Box2D多个实体的一个夹具
- 在MSCRM 2015中使用javascript限制多实体查找
- 删除输入中输入的符号
- 如何在ReactJs中渲染重音符号
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 插入符号到底是什么
- 有更好的方法吗?(递归解析HTML unicode实体)
- 如何使用angularJS从json的对象数组中显示和计数实体
- 删除图形和数字之间的连字符(-)符号
- 将文档实体传递给JavaScript函数
- 浏览器intl.NumberFormat未正确显示货币符号
- jquery-ui自动完成选择菜单html实体(符号和引号)
- 将特殊字符实体名称转换为实际符号