2013-02-15 138 views
0

我有一个场景,我使用自动完成jquery UI与textarea。每次用户从建议中选择一个值时,textarea都会填入选择后跟分号。在文本区域隐藏HTML标签

我需要跟踪建议中选定值的ID。我的想法是让他们在span标签的数据属性中包装选定的值并填充textarea.But现在textarea正在显示这些HTML标签。

有什么建议应该做什么?

+0

当您选择的标签来实现所以,像类似于在这里自动完成一个问题。我总是将ID保存在隐藏文本字段中以便在提交时使用。如果需要的话,我会向用户显示一些图形,html等,以便他们可以看到他们选择并在必要时删除。你是这个意思吗? – Leeish 2013-02-15 04:12:23

+0

是的,我也可以在稍后检索该ID。如果保存到隐藏的文本字段,那么很可能是我在这里失去了选择和ID之间的映射。 – remo 2013-02-15 04:15:25

+0

那我就是这么做的。这样,你正在分解你的设置和数据方面的视觉方面。在自动完成的选择方法我只是运行我的“保存到隐藏的领域”功能和我的“创建反馈功能”。这看起来很干净,直截了当。我不喜欢试图从注入的代码中解析ID等。 – Leeish 2013-02-15 04:17:51

回答

0

简单实现此目的并保持您的ID正确的最佳方法(当您需要将东西打开以便用户可以自由输入时)是在您需要时而不是在之前获取ID。我的意思是允许用户自动完成并选择或手动输入,但是在您使用该数据执行某些操作时,您会为列表中的每个项目获取ID。

<textarea>Item 1; Item 2; Manual Item 3;</textarea> 

然后在提交点说(甚至在服务器端)你再拆你的清单,并做了基于名字的每个ID的样子。这将自动防止用户做这样的事情的Item 1手动修改,或者说重新排序列表:

<textarea>Item 42; Item 2; Manual Item 3;</textarea> 

通过上面的例子,因为在列表中的每个项目重新审问了它的ID,你需要它之​​前,将使用Item 42而不是Item 1。如果你有任何其他形式的ID跟踪,那么无论如何你都必须检查这个可能性,这将导致整个堆的额外代码和工作。

当您在提交时检查ID时,您唯一需要做的额外工作就是如果您想为尚不存在的项目发生任何特殊事件。但是,最有可能的是,您需要使用专门跟踪ID的系统来执行此操作。

如果您担心优化问题,您可以始终使用名称作为查找键并将值作为ID(在用户自动完成时返回)。然后在用户完成时使用这个哈希填充ID列表。

/// create your lookup object 
lookup = {}; 

/// store in the lookup 
lookup[name] = id; 

/// then after a few selections you'll end up with an object like so: 
{ 
    'Item 1': 1, 
    'Item 2': 2, 
    'Item 42': 42 
}; 

显然,你可能会想考虑上名字的小写的可能性,但可以用.toLowerCase()