HTML表单元素匹配"名称"和"ID"?

Cra*_*nio 2 html php forms

在编写时,我有很长的习惯,在可能的情况下使用匹配的"name"和"id"属性命名HTML表单中的大多数字段.这使我可以简化动态HTML生成,f.恩.使用以下方法在PHP中创建下拉列表:

select("myselect", $values);
Run Code Online (Sandbox Code Playgroud)

代替:

select("myselect", "myselectId", $values)
Run Code Online (Sandbox Code Playgroud)

使我的元素立即可用于选择器,如JQuery中的选择器(用于验证等).

我知道这个解决方案有一些问题(它对单选按钮和复选框数组不好 - 为此我$id在我的PHP函数中包含一个参数用于无线电 - 它混合了两个用于不同目的的属性,它可能会导致问题超过一个表格在页面上).

这个坏习惯真的那么糟糕吗?我是否忽略了其他一些可能的负面副作用?你会在我的位置做什么?

  • 只要不引起任何问题,请坚持这一点
  • 不要使用"ids"并使用适当的JQuery选择器,例如 $(form[name='...'] input[name='...']).somefunction()
  • 每个元素中的代码都有不同的id?

Que*_*tin 6

给一个匹配名称和id的元素不会导致问题,因此您不必担心它,这也不是一种不好的做法.

相关的事物,会导致问题:

  • 为多个元素提供相同的id(例如,如果您有一个单选按钮组,其中每个成员必须具有相同的名称).
  • 给一个元素一个名称,给一个不同的元素一个匹配的id

根本不要使用"ids"

如果您没有为表单控件提供id,则不能使用for属性将其与<label>元素关联.for对于使表单控件成为标签的后代,对属性的支持稍微好一些.由于标签对于可访问性非常有用(它们会增加点击目标的大小并在控件和输入之间产生非可视关联),因此关闭ids不是一个好主意.