Автозаполнение JQUery не работает должным образом в IE8 - PullRequest
0 голосов
/ 14 апреля 2010

У меня есть сценарий, который работает в Firefox и Chrome, но в IE 8 я получаю эту ошибку:

$.Autocompleter.defaults = {
    inputClass: "ac_input",
    resultsClass: "ac_results",
    loadingClass: "ac_loading",
    minChars: 1,
    delay: 400,
    matchCase: false,
    matchSubset: true,
    matchContains: false,
    cacheLength: 10,
    max: 100,
    mustMatch: false,
    extraParams: {},
    selectFirst: true,
//the following line throws the error, read down for error message
    formatItem: function(row) { return row[0]; },
    formatMatch: null,
    autoFill: false,
    width: 0,
    multiple: false,
    multipleSeparator: ", ",
    highlight: function(value, term) {
        return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]<em>)(" + term.replace(/([\^\$()[]{}*.+\?\|\])/gi, "\$1") + ")(?![^<>]</em>>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
    },
    scroll: true,
    scrollHeight: 180
};
` конкретная ошибка гласит: «0» является нулем или не является объектом

Могу ли я изменить строку [0] на что-то? Это найдено в jquery.autocomplete.js, и оно читает то же самое в firefox и не вызывает ошибку, поэтому я не хочу менять это, если это возможно

любой совет поможет, спасибо!

1 Ответ

1 голос
/ 14 апреля 2010

Это то, что я делаю (в основном я использовал функцию formatItem, но вынул это и попробовал то, что вы сделали, и это работает.

function setSearchAutoComplete() {
    $("#txtContactSearch").autocomplete
   ("../DataFiles/MaintainMessages.ashx?what=GU",
       {
           //formatItem: formatItem,
           formatItem:function(row){return "<em>" + row[0] + "<em>";},
           selectFirst: true,
           minChars: 2,
           max: 50,
           cache: false
       }
   );
    $("#txtContactSearch").result(findValueCallback);
}

function findValueCallback(event, data, formatted) {
    $("#divSelectedContacts").append("<span id='C" + data[1] + "' class='selectedContact'>" + data[0] + "</span>");
}

function formatItem(row) {
    return "<em>" + row[0] + "<em>";
}

НТН

...