我有一个用于自动完成功能的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>
答案 0 :(得分:2)
在方差的两边使用LOWER。
... WHERE LOWER(db_field) = LOWER(:text) ...
或者您可以在将输入提供给数据库之前将输入转换为低位,并在此情况下省略右LOWER
如果是LIKE
... WHERE LOWER(db_field) like '%' || LOWER(:text) || '%' ...
请始终正确引用或更好地使用perpared语句以防止SQL注入。
编辑:找到一种更简洁的方式,只使用绑定而不引用
答案 1 :(得分:0)
我假设您使用的是MySQL。
您可以降低字段名称和搜索值
WHERE LOWER( db_table.db_field ) = LOWER(:text) // find exact match
或使用与较低的一样:
WHERE LOWER( db_table.db_field ) LIKE '%' || LOWER(:text) || '%' // find all that have this text as substring
但在boh情况下,请记住使用参数化状态网,以避免SQL注入攻击。