html - 有没有办法给 HTML 输入某种命名空间来避免冲突?

标签 html forms input namespaces server-side-scripting

<!-- 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/

相关文章:

html - 如何修复引导下拉菜单问题

javascript - 为什么没有适用于 IE9 等旧版浏览器的 flexbox polyfill?

css - 如何使 CSS 居中 div,它是表单元素的子元素?

javascript - 选择表单中的第 N 个输入元素

javascript - 如何使用javascript程序设置输入值

jquery - 不寻常的 3 列一页网站 - 只是中心列滚动

html - 没有百分比的进度条

python - 为什么使用带有 post 的表单在 python 中发送图像不起作用

php - 使用 javascript 在不同的表单字段中显示 2 个不同的 MySQL 结果

css - 输入密码和 :after pseudoelement text