【问题标题】:Disable case sensitive with autocomplete使用自动完成禁用区分大小写
【发布时间】:2013-03-13 14:22:19
【问题描述】:

我对 jQuery 自动完成有疑问。当我在“LI”之类的字段中写一些东西时,我需要自动完成返回所有以“LI”开头的单词(小写和大写的单词)。但是当我写这个时,自动完成只会返回大写的单词。有可能改变吗?

更新:我找到了一种方法,我不知道这是否是正确的方法,但是......我正在使用它。它只是放入自动完成“ILIKE”的“SELECT”,而不是“LIKE”。它对我有用,但(再次)我不知道这是否是正确的方法!

【问题讨论】:

  • 您有本地或远程数据源吗?
  • @mzs_newbie:我个人在WHERE 或ORDER BY 中使用COLLATE 来强制将区分大小写的列/表解释为不区分大小写。
  • @mzs_newbie:代码示例见the answer。您使用哪个数据库?在 SELECT 内支持 COLLATE 吗?或者,您可以在比较操作的两侧添加LOWER 或UPPER 函数。
  • 我正在使用 postgres。再次感谢,我认为最好按照你说的去做! :)

标签: jquery autocomplete case-sensitive


【解决方案1】:

最简单的解决方案呢? 我的解决方案是 PHP+MySQL,但您可以简单地将其调整为您想要的每个场景。

$upperString = strtoupper($stringToCompare);
$query .= "SELECT blablabla WHERE UPPER(columnName) LIKE '%$upperString%'";

像魅力一样工作

Linuxatico

【讨论】:

    【解决方案2】:

    根据您为自动完成构建列表的方式,这可能会自动内置,例如,在我的 C# 代码中,实体框架与 MySQL db 对抗的情况对我来说并不重要。

    //Builds a search list for Card Name Search boxes
    public JsonResult GetACResults(string term) 
    {
        return Json((from item in db.tableName
            where item.NameOfInterest.Contains(term)
            select new
            {
                value = item.NameOfInterest
            }).Distinct().OrderBy(x => x.value).ToList(),
            JsonRequestBehavior.AllowGet);
    } //public JsonResult GetACResults(string term)
    

    如果这是您必须自己处理的问题,您可以查看这篇文章作为解决方案: Case insensitive 'Contains(string)'

    【讨论】:

    • 嗯好的。那是我正在使用 php,但我不知道如何在 php 中使用它。但是感谢@Mark :)
    • 概念应该是一样的,基本上Contains就是C#相当于MySQL中的LIKE。我怀疑你会很难找到使用 LIKE 和 PHP 搜索 db 结果的示例。如果这解决了您的问题,请标记为正确。
    • 嗯嗯好的。再次感谢:)
    【解决方案3】:

    我找到了一种方法,我不知道这是否是正确的方法,但是……我正在使用它。 它只是放入自动完成“ILIKE”的“SELECT”,而不是“LIKE”。它对我有用,但是(再次)我不知道这是否是正确的方法!

    :)

    【讨论】:

    • 您使用什么作为自动完成的来源?我是否遗漏了一些东西,但 jqGrid 不自动完成,但你正在调用 jQuery 自动完成?
    • 对不起@Mark...也许我只是对此感到困惑...我认为是jQuery自动完成...我将更改问题的标题。感谢您的评论!
    猜你喜欢
    • 2013-04-08
    • 1970-01-01
    • 2012-01-29
    • 2011-06-26
    • 1970-01-01
    • 2019-05-29
    • 2014-01-26
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多