在HTML表单中使用自动生成的(即随机的)ID

时间:2013-11-21 10:36:16

标签: javascript jquery html backbone.js

我正在使用我构建为Backbone视图的各种复杂控件创建表单。可以理解,我希望可靠地将标签链接到<input>元素,我正在使用正常的for属性。

但是,有时我需要多次使用相同的控件。我使用数据属性来驱动表单,因此我不需要id属性供我自己使用,并且可以使用类来标识每个控件。

因此,我正在考虑生成随机ID是否有意义,只是将<label><input>链接在一起?这似乎是个坏主意,但我不确定哪个更好?

我不能将<input>放在<label>内,因为它们必须彼此分开。

2 个答案:

答案 0 :(得分:2)

自动生成ID没什么不好。如果他们不是人类 - (==开发人员)可读,你可以在那里发疯。创建一个简单的函数,它会发出独特的字符串,然后你就去了:

function generateId() {
    return 'GENERATED_ID_' + (++generateId.counter);
}
generateId.counter = 0;

id = generateId();
html = '<label for="'+id+'">Foo</label> <input id="'+id+'">';

这里没有发生任何不好的事情。

(当然,如果你可以将输入嵌套在标签中,那就更好了。)

答案 1 :(得分:2)

我会使用Backbone视图的cid属性。这已经很独特了。可能然后在基本视图中覆盖_.template以始终包含此内容(以便每次都保存传递)。