<!-- Some place on the webpage -->
<input type="text" id="firstName">
<!-- Some other place on the same webpage, or maybe content ajaxed in later -->
<input type="text" id="firstName">
假设我有一个服务器端脚本,它生成一个 HTML 页面,其中包含一些输入字段,每个输入字段都有自己的 ID。一个服务器端类可能负责将输入字段添加到网页的一部分,而另一个类则处理网页的另一部分。或者您可能让不同的程序员处理页面的不同部分。我想避免与 HTML 输入字段 ID 发生冲突。这方面的一个例子可能是一个父表单,它有一个 jQuery 对话框弹出窗口,其输入字段 ID 与父表单相同。目前,我在 ID 前加上生成它们的服务器端类的名称(以及一个下划线以明确哪一部分是前缀)。要以这种方式获得完全唯一的 ID,我可能必须开始包含服务器端类的完整 namespace ,这可能会使我的 ID 变得很长。
有没有比为输入添加前缀更好的方法,或者对此的最佳做法是什么?我通常对所有变量使用驼峰命名法,只有这个异常(exception)。这是打破规则的好异常(exception)吗?
你们大多数人在做什么?您是否正在改变选择这些输入字段而不是按 ID 的方式?将输入字段包装在 form
标签或 div
标签中并向服务器端添加功能来创建这些? (我想自由地不限制我将这些输入包装在选择它们的内容中。我的服务器端代码应该只生成客户端代码来获取值,只知道这些输入正在进入页面,而不是知道页面上的任何其他标签。更容易管理。)您是否向每组字段添加 css 类?
最佳答案
这个答案更针对来自搜索引擎的用户。在我看来,如果您在动态生成的表单中使用 id
属性,它们可能应该是某种生成的 id/hash,除非它确实是一个唯一字段。除此之外,这可能是命名 HTML 表单的最佳方式,尤其是当它受到冲突时:
<input name="pet_store[name]" value="" />
<input name="dogs[0][name]" value="" />
<input name="dogs[1][name]" value="" />
<input name="dogs[2][name]" value="" />
<input name="cats[0][name]" value="" />
<input name="cats[1][name]" value="" />
<input name="cats[2][name]" value="" />
如果一次全部提交,输入将自动组织成数组(至少在 PHP 中,对于 nodejs,您可能会成功使用 https://www.npmjs.com/package/qs )。
在 jQuery 中,您可以 select所有的狗名字段都是这样的:
$('input[name$="[name]"][name^=dogs]')
关于html - 有没有办法给 HTML 输入某种命名空间来避免冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958339/