我有一个用于自动完成功能的 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
如果喜欢
... WHERE LOWER(db_field) like '%' || LOWER(:text) || '%' ...
请始终正确引用或更好地使用准备好的语句来防止 SQL 注入(inject)。
编辑:找到了一种更干净的方法,仅使用绑定(bind)而不引用
关于javascript - Javascript 中不区分大小写的自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28542670/