我在使用一些 javascript 时遇到了一些困难。这段代码似乎在 Firefox 和 Chrome 中正常工作(如果搜索词长度小于 2 个字符,则会显示错误消息),但对于我来说,我无法弄清楚为什么这不会在 IE8 中呈现错误消息.
我曾尝试更改以下内容:(请参阅:Internet Explorer 8 中的 jQuery 问题)
认为这可能是 jquery 的细微差别,但我开始认为代码可能有问题,或者它可能必须有一些 IE8 特定的逻辑,但我没有想法。JQuery 实际上适用于其他方法,只是这一段代码似乎没有在 IE 上呈现错误消息。
$(document).ready(function() {
$('#countrySelectionSubmitButton').on('click',function(){
$.cookie("locale","en_US");
});
$('#countrySelectionCancelButton').on('click',function(){
alert($.cookie("locale"));
});
$('#countrySelectionDisplayLocale').text($.cookie("locale"));
var showError = false;
if ($( "#mainSearch" ).length > 0) {
$( "#mainSearch" ).autocomplete({
minLength: 0,
source: function(request, response) {
var term = $("#mainSearch").val();
if ( term.length < 2 || term === $("#mainSearch").attr('title')) {
response([SiteSearch.ErrorMessage]);
if ( !showError) {
$( "#mainSearch" ).autocomplete('close');
}
showError = false;
} else {
if (term.length >= 3) {
$( "#mainSearch" ).autocomplete('enable');
$.ajax({
url: SiteSearch.LookAheadURL +"?term=" + $('#mainSearch').val() + "&countryCode=" + SiteSearch.CountryCode,
type: 'GET',
//dataType: 'jsonp',
//jsonp: 'callback',
//jsonpCallback: 'autocomplete_callback',
error: function(xhr, status, error) {
throw new Error ("Autocomplete Service Error");
},
success: function(data) {
//console.log('ajax success');
var dataset = [];
$.each(data.suggestions, function(i,v) {
dataset.push($('<div/>').html(v.value).text()); // Original
});
response(dataset);
}
});
}
}
},
select: function (event, ui) {
if (ui.item.value === SiteSearch.ErrorMessage) {
event.preventDefault();
} else {
$(this).val(ui.item.value);
$('#sitesearchform').submit();
}
}// Point of the list (DDL ErrorMessage being created / populated) IE doesn't render correctly.
}).data("autocomplete")._renderItem = function(ul, item) {
var re = new RegExp("(" + RegExp.escape(this.term) + ")", 'gi') ;
var match = item.label;
if (item.value !== SiteSearch.ErrorMessage) {
match = item.label.replace(re, "<span class='autocompleteMatch'>$1</span>");
}
return $( "<li></li>" )
.data("item.autocomplete", item)
.append( "<a>" + match + "</a>" )
.appendTo(ul);
};
} else {
throw new Error("Could not find $('#mainSearch')");
}
$("#sitesearchform").submit(function(){
var term = $("#mainSearch").val();
if ( term.length < 2 || term === $("#mainSearch").attr('title')) {
showError = true;
$( "#mainSearch" ).autocomplete('search');
return false;
}
return true;
});
编辑:我还注释掉了 console.log 行
任何想法或想法将不胜感激。谢谢大家。
- RR