JQuery автозаполнение не работает, т.е. - PullRequest
2 голосов
/ 20 августа 2009

прекрасно работает в Firefox и Chrome, но то есть выдает ошибку:

"имя не указано или не является объектом"

Я разместил строку, которая заканчивается в IE жирным шрифтом ниже.

$("#toemail").autocomplete(emails, {  
    minChars: 0,  
    width: 310,  
    matchContains: true,  
    autoFill: false,  
    formatItem: function(row, i, max) {  
        return i + "/" + max + ": \"" + row.name + "\" [" + row.to + "]";  
    },  
    formatMatch: function(row, i, max) {  
        **return row.name + " " + row.to;**  
    },  
    formatResult: function(row) {  
        return row.to;  
    }
});

РЕДАКТИРОВАТЬ: я понял ... ответил ниже.

Ответы [ 5 ]

5 голосов
/ 20 августа 2009

Я понял, что это была лишняя запятая в конце последнего элемента в списке в JSON. Похоже, FF не волнует, но IE это сделал.

1 голос
/ 26 октября 2010

для меня, удаление косой черты в JSON и другие предложения не сработали. Вот что я сделал:

Изменено:

    $(":text, textarea").result(findValueCallback).next().click(function() {
            $(this).prev().search();
    });

Кому:

    $("#suggest1").result(findValueCallback).next().click(function() {
            $(this).prev().search();
    });

Это исправлено. #suggest1 - это идентификатор моего ввода текста.

0 голосов
/ 23 июля 2010

Я знаю, что это старый пост, но у меня была та же проблема, и я хотел бы добавить свое "решение" - хотя я не думаю, что оно хорошее.

Я использовал JQuery 1.4.2 для выполнения ajax-запроса, чтобы получить некоторый xml для отображения в раскрывающемся списке автозаполнения, но я продолжал получать эту ошибку в IE:

'location.protocol' равен нулю или не является объектом

Я посмотрел в Интернете, и несколько источников рекомендовали вернуться к 1.3.2, что я и сделал, и несколько проблем, с которыми я столкнулся при вызовах ajax, прояснились. Я не уверен, что делать с этой проблемой, и не чувствую себя удовлетворенным решением, но оно сработало.

0 голосов
/ 12 февраля 2010

По какой-то причине IE вызывает функцию formatItem при загрузке страницы. то же самое происходит с formatMatch и formatResult, если вы предоставляете для них пользовательские функции. проблема в том, что когда IE вызывает эти функции, он не предоставляет никаких параметров, и это вызывает ошибку.

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

formatItem:function(row){return row[0];}

до

formatItem:function(row){if (row) return row[0]; else return "";}

и модифицируя функцию populate (), я изменил

  if(value===false)continue; 

до

  if(!value || value===false)continue;

Также, если вы предоставляете свои собственные пользовательские функции для formatItem, formatMatch или formatResult, обязательно проверьте наличие параметра строки, например:

formatItem: function( row, i, max ) {

  if (row)
    return row.name + " (" + row.id + ")";
}
0 голосов
/ 20 августа 2009

Что такое сообщение об ошибке? Вы использовали инструменты визуального отладчика stuido / script / отладчика ie8 для фактического перехода в js и анализа объектов row & max, чтобы увидеть, что они из себя представляют?

Добавьте оператор отладчика следующим образом, и он будет разбит на отладчик до того, как произойдет ошибка.

formatMatch: function(row, i, max) {  
           debugger;
           return row.name + " " + row.to;
        },  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...