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'];
    

顺便提一下。在我的数据库中,所有字符都显示正确。

【问题讨论】:

An Unexpected token 似乎表明您的 php 工作不正常 - 这是您从 var names = ; 得到的错误,因此请确保 echo 不输出一个空字符串。问题中没有足够的信息来说明这是否是唯一的问题 我会写整个php。问题是如果我删除带有特殊字符的单词没有错误。 【参考方案1】:

问题是没有元字符集 utf8。我添加了它,现在一切正常。

【讨论】:

以上是关于Jquery UI自动完成重音映射不适用于斯拉夫字符的主要内容,如果未能解决你的问题,请参考以下文章

自动完成不适用于值数组

inputProps= readOnly: true 不适用于 Material UI 自动完成

JQUERY UI自动完成,最后一个字改变颜色

jquery自动完成不适用于JSON数据

如果有图像,如何捕获 jquery ui 自动完成的选择事件?

jQuery .val() 不适用于 jQueryUI 自动完成功能