如何使用自动完成功能处理多个项目的选择?我从JSON Web服务返回的对象包含ID和Label - ID是数据库中实体的ID,Label是为用户显示的一些文本。
此时,当我在自动完成下拉列表中选择一个项目时,项目ID的值将存储在隐藏字段中,并显示标签。当我删除标签时,我清除了隐藏字段的ID - 这是通过向处理此问题的DOM添加一个锚元素来完成的。
现在,我希望有多个选择。我希望能够输入一些文本,获得自动完成下拉列表,选择项目和其他一些选项,然后可以单击“添加新”按钮或喜欢以便能够选择另一个实例。
例如,我输入一个人的姓名并获得自动填充选择。我选择一个人,然后输入他们的年龄,然后点击“添加”。该人的身份,姓名和年龄将存储在某处,以便我在回发时可以在服务器端检索它。
我不太清楚怎么做?我正在考虑一个隐藏的字段 - 我假设许多相同名称/ id的隐藏字段在服务器端作为一个数组出现,然后我可以使用它。但我还没有在ASP.NET中尝试过这个。
你是怎么解决这个问题的?
答案 0 :(得分:0)
好吧,没有建议。我最终通过自动完成选择创建了一个漂亮的样式跨度。它的文本包含标签,它包含一个锚点元素,我将click事件绑定到必要时删除元素,并使用jQuery数据API将ID值存储在span上。在我用于自动完成的文本框之前,此跨度将添加到容器div中。我还将一个keyup事件绑定到文本框以检查退格 - 当它被按下并且textfield为空时,我删除最后一个自动完成项。但是它有点复杂,因为在按下keyup事件时,已经删除了从文本框中删除的字符,所以我也使用jQuery API将实际值存储在keydown事件中并在关键事件。
表单上有一个隐藏字段,我在其中填充了以逗号分隔的从字段数据中提取的ID值列表。这可以在添加/删除项目时保持同步,或者仅在我回发时保持同步 - 最简单的方法是清除它并重新填充它,并且就我所知而言非常有效。
加载页面时,必须生成跨度和隐藏字段。
希望这可以帮助其他人寻找解决方案。