Jquery UI自动完成重音映射不适用于斯拉夫字符
Posted
技术标签:
【中文标题】Jquery UI自动完成重音映射不适用于斯拉夫字符【英文标题】:Jquery UI autocomplete accent map not working with slavic characters 【发布时间】:2016-04-16 18:53:13 【问题描述】:我做了mysql数据库。我在其中存储了值。都是utf8_unicode_ci。
我制作了从数据库读取值的 jquery-ui 自动完成字段。
$(function()
var names = <?php echo json_encode($rows); ?>;
var accentMap =
"š": "s",
"đ": "d",
"č": "c",
"ć": "c",
"ž": "z",
"Š": "S",
"Đ": "D",
"Č": "C",
"Ć": "C",
"Ž": "Z"
;
var normalize = function( term )
var ret = "";
for ( var i = 0; i < term.length; i++ )
ret += accentMap[ term.charAt(i) ] || term.charAt(i);
return ret;
;
$( "#field1" ).autocomplete(
source: function( request, response )
var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
response( $.grep( names, function( value )
value = value.label || value.value || value;
return matcher.test( value ) || matcher.test( normalize( value ) );
) );
);
);
当我使用重音映射中的一些字符插入值时,我的自动完成功能停止工作。当我删除带有特殊字符的值时,一切正常。 我的 var 名称所在的控制台出现错误 - Unexpected token。如果我删除带有特殊字符的值,错误不再存在。
有人遇到过这个问题吗?
编辑:
我的 $rows var_dump 显示如下:
array (size=8)
0 => string 'Split' (length=5)
1 => string 'Hajduk' (length=6)
2 => string 'Monkey' (length=6)
3 => string 'First' (length=5)
4 => string 'Zagreb' (length=6)
5 => string 'Table' (length=5)
6 => string 'Computer' (length=8)
7 => string '�ibenik' (length=7)
如果我回显 $rows 我得到这个:
Array
如果我删除第 7 行,一切正常。
这是我的 php:
global $rows;
require_once ('database_connect.php');
$query = 'SELECT words FROM tbl';
$result = mysqli_query($dbc, $query);
$rows = array();
while ($r = mysqli_fetch_assoc($result))
$rows[] = $r['words'];
顺便提一下。在我的数据库中,所有字符都显示正确。
【问题讨论】:
AnUnexpected token
似乎表明您的 php 工作不正常 - 这是您从 var names = ;
得到的错误,因此请确保 echo
不输出一个空字符串。问题中没有足够的信息来说明这是否是唯一的问题
我会写整个php。问题是如果我删除带有特殊字符的单词没有错误。
【参考方案1】:
问题是没有元字符集 utf8。我添加了它,现在一切正常。
【讨论】:
以上是关于Jquery UI自动完成重音映射不适用于斯拉夫字符的主要内容,如果未能解决你的问题,请参考以下文章
inputProps= readOnly: true 不适用于 Material UI 自动完成