Jquery AutoComplete:如何使用DOM元素填充源数组?

时间:2011-11-25 09:09:03

标签: jquery autocomplete jquery-autocomplete

这是标准的Jquery自动填充代码。

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

假设我能够通过服务器端(ASP.NET / PHP)填充HTML DOM(分隔文本或由table / tr / td构成的网格)。如何通过它“读取”并将其存储在“availableTags []”中以供Jquery Autocomplete使用?

如果我隐藏(显示:无;也许)这个DOM元素,Jquery仍然可以“看到”吗?

2 个答案:

答案 0 :(得分:1)

如果您没有直观地呈现数据,我更喜欢隐藏的字段解决方案。如果你隐藏就不需要构建一个表(即使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

答案 1 :(得分:1)

为什么不让服务器端代码直接将数组的javascript声明输出到页面上?这样你就不需要解析它了,你的服务器端代码在任何一个实例中都会有效。