我在这里使用一些javascript遇到了一些困难。这段代码似乎在Firefox和Chrome中正常工作(如果搜索词长度小于2个字符,则显示错误消息),但对于我的生活,我无法弄清楚为什么这不会呈现错误消息IE8。
我尝试过更改以下内容: (见:jQuery issue in Internet Explorer 8)
认为它可能是一个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行
任何想法或想法将不胜感激。提前谢谢大家。
答案 0 :(得分:0)
我实际上最终修改了方法,以显示标签内放置的错误消息。
$("#sitesearchform").submit(function(){
var term = $("#mainSearch").val();
if ( term.length < 2 || term === $("#mainSearch").attr('title')) {
showError = true;
$( "#mainSearch" ).autocomplete('search');
$('#headerSearch > ul').show();
return false;
}
return true;
});