对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编码步骤,因此我觉得问题就在那里......
非常感谢任何帮助, 谢谢, 哈利
答案 0 :(得分:0)
好吧我毕竟想出来了。这非常容易......
如果有人遇到类似的问题,我只需用他们的unicode代码替换accentMap的希腊字符,一切正常。