使用具有希腊字符的自动完成的accentMap方法

时间:2016-03-25 09:52:58

标签: jquery encoding autocomplete

对jQuery知之甚少并坚持下去。我试图使用自动完成函数的accentMap方法为json编码的希腊字符数组。我最终想要达到的目的是:用户在搜索框中输入拉丁字符,但自动填充相应地映射它们并建议数组的希腊条目。这就是我所拥有的:

我的PHP数组变量$array回显:

Array ( [0] => ΩΦΧ [1] => ΓΔΕ )

我的json编码数组通过:

$array_json = json_encode($array);

我的相关DOM元素:

<input class="search-class" type="search" id="search-id"/>

<div id="autocomplete"><?php echo $array_json; ?></div>

我的Jquery脚本,从here复制:

jQuery(function() {
    var autocompleteData = jQuery('#autocomplete').text();

    var accentMap = {
      "ω": "w",
      "φ": "f",
      "χ": "x",
      "γ": "g",
      "δ": "d",
      "ε": "e"
    };

    var normalize = function( term ) {
      var ret = "";
      for ( var i = 0; i < term.length; i++ ) {
        ret += accentMap[ term.charAt(i) ] || term.charAt(i);
      }
      return ret;
    };

    jQuery( "#search-id" ).autocomplete({
      source: function( request, response ) {
        var matcher = new RegExp( jQuery.ui.autocomplete.escapeRegex( request.term ), "i" );
        response( jQuery.grep( jQuery.parseJSON(autocompleteData), function( value ) {
          value = value.label || value.value || value;
          return matcher.test( value ) || matcher.test( normalize( value ) );
        }) );
      }
    });
  });

对于记录,自动完成功能与希腊输入字符一起正常工作。

我尝试重新安排重点图的顺序(即&#34;拉丁&#34;:&#34;希腊&#34;)或使用$array_json = utf8_encode(json_encode($array));没有任何运气。

我认为问题在于json编码步骤。如果我使用希腊字符修改此jsfiddle找到here,则一切正常。但是在这个jsfiddle中缺少json编码步骤,因此我觉得问题就在那里......

非常感谢任何帮助, 谢谢, 哈利

1 个答案:

答案 0 :(得分:0)

好吧我毕竟想出来了。这非常容易......

如果有人遇到类似的问题,我只需用他们的unicode代码替换accentMap的希腊字符,一切正常。