2010-10-06 2 views
1

Я пытаюсь реализовать метод автозаполнения для текстовых полей.Как передать значения в массив javascript?

Я хотел бы использовать пример, основанный на jquerys автозаполнения при условии here

<head> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

    <script> 
    $(document).ready(function() { 
    $("input#autocomplete").autocomplete({ 
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"] 
}); 
    }); 
    </script> 
</head> 

Первый и основной проблемой является то, что я не знаю, путь прохождения мои ценности в source:

Говоря что я имею в виду, полагая, что у меня есть функция ASP.NET на стороне сервера. GetTheResults как listof (string) или GetTheResults as string()

как есть чтобы передать эти значения в качестве источника, требуемого автозаполнением?

Вторая проблема заключается в том, что конкретный способ не использует AJAX. Это означает, что я догадываюсь о загрузке формы, и я загружу все доступные значения в источник. Разве это не избыток?

Что вы предлагаете вместо этого?

Спасибо и приветствую!

+0

Рассмотрите http://view.jquery.com/trunk/plugins/autocomplete/demo/, который позволяет загружать значения AJAX. – Gazler

ответ

0

О, может быть, я неправильно понял - это GetTheResults серверная функция ASP.NET? Вы не сказали. Это предполагает, что это клиентская функция JavaScript. Если это серверная сторона, почему бы не реализовать способ AJAX?


Если GetTheResults возвращает все значения, то я думаю, вы можете просто заполнить его в инлайн, т.е.

$("input#autocomplete").autocomplete({ 
    source: GetTheResults() 
    } 
}); 

управления будет фильтровать список для отображения. Или вы можете использовать механизм источника функции, как описано на этой странице, например.

$("input#autocomplete").autocomplete({ 
    source: function(request, response) { 
     var results = GetTheResultsForInput(request.term); 
     response(results); 
    } 
}); 
+0

Yeap! GetTheResults является серверной ASP-функцией. Извините, что не упоминал об этом. – OrElse

0

Вы можете вручную выписать содержимое с сервера клиенту. Попробуйте создать публичный метод под названием:

public string GetJs() 
{ 
    var data = this.GetTheResults(); 
    string output = "["; 
    bool comma = false; 

    foreach (var i in data) 
    { 
     if (comma) 
     output += ", "; 
     else 
     comma = true; 

     output += '" + i + "'"; 
    } 

    return output + "]"; 
} 

и изменить сценарий на стороне клиента, чтобы выглядеть следующим образом:

$(document).ready(function() { 
    $("input#autocomplete").autocomplete({ 
    source: <%= GetJs() %> 
}); 
    }); 

Вы, возможно, придется впрыскивать <% =%> в виде строки, и вместо того, чтобы сделать :

source: eval("<%= GetJs() %>") 

Или вы могли бы написать весь JS со страницы на выход.

HTH.

Смежные вопросы