资本“i”与jquery选择器一起出问题

时间:2014-01-20 15:59:03

标签: jquery jquery-selectors capitalize

我遇到了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”和“İ”。

谢谢..

1 个答案:

答案 0 :(得分:0)

对于这个直接问题,你可以通过这样做解决它:

首先确保现有的<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();
});

或者您可以在replace()方法中使用change()(在尝试过滤之前)。

PS - 我无法测试这个,因为我的键盘不是土耳其语,但尝试一下,如果失败,请告诉我。