我遇到了jquery选择器的问题。
这是;
Jquery Selector(新):
<script>
(function ($) {
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
function filterList(header, list) {
var form = $("<form>").attr({"class":"filterform","action":"#"}),
input = $("<input>").attr({"class":"filterinput","type":"text"});
$(form).append(input).appendTo(header);
$(input)
.change( function () {
var filter = $(this).val();
if(filter) {
$matches = $(list).find('a:Contains(' + filter + ')').parent();
$('li', list).not($matches).slideUp();
$matches.slideDown();
} else {
$(list).find("li").slideDown();
}
return false;
})
.keyup( function () {
$(this).change();
});
}
$(function () {
filterList($("#form"), $("#list"));
});
}(jQuery));
</script>
名单:
<div class="normal" id="form"></div>
<li>İngiltere</li>
<li>Iraq</li>
<li>Argentina</li>
当输入“i”输入框时,“İngiltere”不会出现。只有“阿根廷”。当我在框中输入“i”时,我必须进行修改以搜索“i”和“İ”。
谢谢..
答案 0 :(得分:0)
首先确保现有的<li>
项目没有该字符。如果他们这样做,你需要运行:
$('#form li').each(function() {
$(this).text($(this).text().replace(/\u0130/g, "I"));
});
但不管怎样,你都需要这个:
将.keyup( function () { ....
代码替换为:
.keyup(function(e) {
var charCode = e.keyCode || e.which;
if (charCode === 304) {
$(this).val($(this).val().replace(/\u0130/g, "I"));
}
$(this).change();
});
或者您可以在replace()
方法中使用change()
(在尝试过滤之前)。
PS - 我无法测试这个,因为我的键盘不是土耳其语,但尝试一下,如果失败,请告诉我。