我已将以下内容编写为插件,因此我可以在我的网站上的多个区域中使用它。这是一个自动完成功能,当您在文本输入中键入前几个字母时,会显示数据库中所有名称的下拉列表。
不幸的是,尽管它在Chrome,Firefox和IE9 +中运行良好,但它似乎在IE8或更低版本中无效。我正在使用Chrome IE模拟器进行测试,当我开始在盒子里打字时,绝对没有任何反应。
我已尝试在alert
行之后立即添加$.fn.customAutocomplete = function() {
。在Firefox中,这会导致alert
在页面加载后立即显示。在IE8中它什么都不做 - 这告诉我,IE8不包括页面加载的插件,但我不知道为什么!任何帮助将不胜感激 - 完整代码如下:
编辑:为了记录,我使用jQuery 1.8.3,如果这有任何区别。
(function($){
$.fn.customAutocomplete = function() {
return this.each(function(){
var obj = $(this);
obj.on('input', function(){
var autoName = obj.val();
var autoLength = autoName.length;
var url = 'http://xenonacademy.org.uk/autoComplete.php';
//console.log(autoLength);
//$('.autoNameEntry').remove();
$('.autoNameDiv').remove();
if (autoLength != 0){
$.ajax({
url: url,
type: "POST",
data: {autoName : autoName},
success: function(data){
obj.parent().append(data);
}
});
}
else {
//$('.autoNameEntry').remove();
$('.autoNameDiv').remove();
}
})
$(document).on('click', '.autoNameEntry', function(){
event.stopPropagation();
var getName = $(this).find('.autoName').html();
var getUserID = $(this).find('.userID').val();
obj.parent().find('.hiddenUserID').val(getUserID);
obj.parent().find('.hiddenUserID').trigger('change');
obj.val(getName);
//obj.trigger('change');
$('.autoNameDiv').remove();
});
});
};
})(jQuery);