Javascript中不区分大小写的自动完成
Case-insensitive autocomplete in Javascript
我有一个用于自动完成功能的javascript代码。它突出显示在搜索框中输入的文本,并将其与数据库中的文本相匹配。这是区分大小写的,所以它只突出显示数据库表中的文本。我希望搜索不区分大小写。这是我现有的代码:
<script type="text/javascript">
$(function() {
var availableTags = [<?php echo $tagsString; ?>];
$( "#tags" ).autocomplete({
source: availableTags
});
});
$.extend( $.ui.autocomplete.prototype, {
_renderItem: function( ul, item ) {
var term = this.element.val(),
html = item.label.replace( term, "<span class='f1'>$&</span>" );
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( $("<a></a>").html(html) )
.appendTo( ul );
}
});
</script>
在您的数据库代码中,在等式的两侧使用LOWER。
... WHERE LOWER(db_field) = LOWER(:text) ...
或者,您可以在将输入提供给数据库之前将其强制转换为lower,并在本例中省略右侧的LOWER
在LIKE 的情况下
... WHERE LOWER(db_field) like '%' || LOWER(:text) || '%' ...
请始终正确引用或更好地使用精简语句来防止SQL注入。
EDIT:找到了一种只使用绑定而不引用的更干净的方法
我假设您使用的是MySQL。
您可以降低字段名称和搜索值,
WHERE LOWER( db_table.db_field ) = LOWER(:text) // find exact match
或与lower一起使用:
WHERE LOWER( db_table.db_field ) LIKE '%' || LOWER(:text) || '%' // find all that have this text as substring
但在boh的情况下,请记住使用参数化状态,以避免SQL注入数据包。
相关文章:
- JavaScript Regex(?i)选项中字符串大小写不敏感的部分不起作用
- 如何使后缀函数不区分大小写
- 使搜索不区分大小写
- Regex:匹配以“AM”结尾的单词(不区分大小写比较)
- 如何使用jQuery进行不区分大小写的搜索
- 日食添加文件而不将其复制到工作区中
- 正则表达式匹配整个字符串,但大小写不敏感
- 拖放区中可拖动的 Jqueryui 不会滚动,会恢复,滚动条存在
- 将字符串添加到不区分大小写的 RegExp 中替换的事物开始
- 存储区不在网格面板内部加载-ExtJS
- javascript从字符串创建不区分大小写的regex
- :包含不区分大小写的解决方案在替换文本以突出显示时不起作用
- 当涉及到if语句时,我如何使Javascript不区分大小写
- 使用简单的角度滤波器来替换输入字符串中某些字符串的所有出现,而不考虑大小写和空格
- Regex以匹配整数或单词“”;“其他”;,不区分大小写
- Javascript中不区分大小写的自动完成
- 使.search()对变量不区分大小写
- 如果一个值在一个数组中,如果大小写不在't匹配,请将其替换为新值
- JSON Jquery大小写不敏感匹配
- 简单的大小写不敏感的搜索框的一个表与jQuery