3

我在使用 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”和“İ”。

谢谢..

4

1 回答 1

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

于 2014-01-20T16:18:07.717 回答