В веб-приложении ASP.NET я пытаюсь создать и заполнить UL на основе пользовательского ввода. Это не быстрое заполнение. Пользователь вводит пару букв, нажимает кнопку, и сервер возвращает все записи, такие как запись. Если существует более одного совпадения, создается UL, показывающий все совпадения.
Я пытался адаптировать этот код из плагина. Я могу пройти через это с помощью отладчика, и все выглядит нормально, но UL либо не генерируется в документе, либо он невидим.
Вот упрощенный код:
function fillBusinessDropdown(ListOfBusinesses) {
var results = document.createElement("div");
var $results = $(results);
$results.hide().addClass("ac_results").css("position", "absolute");
if ($.browser.msie) {
$results.append(document.createElement('iframe'));
}
results.appendChild(businessToDom(ListOfBusinesses));
$results.css({
width: 400 + "px",
top: 100 + "px",
left: 150 + "px"
}).show();
function businessToDom(ListOfBusinesses) {
var ul = document.createElement("ul");
var iLen = ListOfBusinesses.length - 1
for (var i = 0; i <= iLen; i++) {
var row = ListOfBusinesses[i];
if (!row) continue;
var li = document.createElement("li");
// add the business name
li.innerHTML = row.Bu_name;
// add the business ID
li.selectValue = row.Bupk;
var extra = null;
if (row.length > 1) {
extra = [];
for (var j = 1; j < row.length; j++) {
extra[extra.length] = row[j];
}
}
li.extra = extra;
ul.appendChild(li);
$(li).hover(
function() { $("li", ul).removeClass("ac_over");
$(this).addClass("ac_over"); active = $("li", ul).indexOf($(this).get(0)); },
function() { $(this).removeClass("ac_over"); }
).click(function(e) { e.preventDefault(); e.stopPropagation(); selectItem(this) });
}
return ul;
}
Я в тупике. Есть ли у кого-нибудь идеи, где я ошибся?
Спасибо
Майк Томас