Автозаполнение Jquery: Как заполнить исходный массив с помощью элемента DOM? - PullRequest
1 голос
/ 25 ноября 2011

Это стандартный код автозаполнения Jquery.

<script>
    $(function() {
        var availableTags = [
            "JavaScript",
            "C#",
            "VB.NET",
            "ASP.NET"
        ];
        $( "#tags" ).autocomplete({
            source: availableTags
        });
    });
</script>

Допустим, я могу заполнить HTML DOM (текст с разделителями или сетку из таблицы / tr / td) данными через сервер-сторона (ASP.NET/PHP).Как можно было бы "прочитать" его и сохранить в "availableTags []" для использования автозаполнения Jquery?

И если я скрою (покажет: нет; возможно) этот элемент DOM, сможет ли Jquery его «увидеть»?

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

Почему бы серверному коду просто не вывести объявление javascript массива прямо на страницу? Таким образом, вам не нужно будет анализировать его, и ваш код на стороне сервера будет практически одинаковым в любом случае.

1 голос
/ 25 ноября 2011

Я бы предпочел решение для скрытого поля, если вы не представляете данные визуально.Нет необходимости создавать таблицу, если вы прячетесь (даже если jquery сможет работать, это просто визуальное скрытие, оно все еще находится в DOM).

.map () Функция, за которой следует .toArray (), генерирует массив javascript:

<table>
    <tr><td>Value1</td></tr>
    <tr><td>Value2</td></tr>
    <tr><td>Value3</td></tr>
    <tr><td>Value4</td></tr>
    <tr><td>Value5</td></tr>
</table>

var availableTags = $('td').map(function() { return $(this).text(); }).toArray();

Или для текста с разделителями в скрытом поле:

<input type="hidden" id="myhiddenfield" value="value1|value2|value3" />

var availableTags = $('#myhiddenfield').val().split('|');

В действии здесь: Jsfiddle

...