jquery选择器的大写“i”问题
Posted
技术标签:
【中文标题】jquery选择器的大写“i”问题【英文标题】:Capital "i" issue with jquery selector 【发布时间】:2014-02-09 21:21:46 【问题描述】:我在使用 jquery 选择器时遇到问题。
这里是;
Jquery 选择器(新):
<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”和“İ”..
谢谢..
【问题讨论】:
很确定这不是大写字母I
。至少不是在 en-us 键盘上。
@Deryck 我认为这是一个特殊字符问题,但目前不确定,因为 OP 提到大写 i(I) 显然不是 İ
"İ" 是土耳其字符。例如,英格兰的翻译是 İngiltere。因此,过滤国家/地区列表是解决这个问题的麻烦......
您可能对此感兴趣:***.com/questions/286921/…
【参考方案1】:
对于这个迫在眉睫的问题,您可以这样做:
首先确保现有的<li>
项目没有该字符。如果他们这样做,您将需要运行:
$('#form li').each(function()
$(this).text($(this).text().replace(/\u0130/g, "I"));
);
Here is what should happen
但无论哪种方式,您都需要:
将您的 .keyup( function () ....
代码替换为:
.keyup(function(e)
var charCode = e.keyCode || e.which;
if (charCode === 304)
$(this).val($(this).val().replace(/\u0130/g, "I"));
$(this).change();
);
或者您可以在 change()
方法中使用 replace()
(在尝试过滤掉它之前)。
PS - 我无法测试这个,因为我的键盘不是土耳其语,但请尝试一下,如果失败,请告诉我。
【讨论】:
当我这样做时,搜索表单 div 消失了。 OK 用两段代码再试一次。只需要正确获取替换代码(忘记了 0 哈哈) 如果不首先考虑代码放置的逻辑,这可能不会起作用,因为基于此我不确定页面加载时哪些数据已经可用以及动态创建的数据。以上是关于jquery选择器的大写“i”问题的主要内容,如果未能解决你的问题,请参考以下文章