为什么不通过与字段集关联的表单关联的字段集的元素?

时间:2018-03-22 12:48:24

标签: html html5

对于表单元素的HTML 5及其新颖的form属性是否有任何“好”的理由,这些元素本身就是fieldset元素的后代,不是与字段集相关的相同形式相关联?

对我来说没有意义,因为fieldset包含这些元素,为什么它包含与另一个表单相关联的元素或根本不与任何表单相关联。

考虑以下示例:

<form id="myform"></form>
<fieldset form="foobar">
    <input name="myinput"></input>
</fieldset>

评估输入元素的form属性会产生null。我的常识告诉我,默认情况下,与表单关联的字段集的后代也应与相同的表单相关联。

我错过了标准委员会没有错过的逻辑吗?或者这只是遗留和向后兼容的情况?

1 个答案:

答案 0 :(得分:0)

我不知道为什么,但看起来您必须进行递归查找,请参阅代码段。

也许原因是因为现在你可以检测一个元素是否已经自己指定了一个表单,但这只是猜测。

顺便提一下,我注意到您的示例有点错误:您需要使用 <form id="....">

&#13;
&#13;
console.log('myfieldset -> ' + findForm(document.getElementById('myfieldset')));
console.log('myinput    -> ' + findForm(document.getElementById('myinput')));
console.log('myinput2   -> ' + findForm(document.getElementById('myinput2')));

function findForm(el) {
  if (el.form) return el.form.id;
  if (el.parentNode) return findForm(el.parentNode);
  return null;
}
&#13;
<form id="myform"></form>
<form id="myform2"></form>

<fieldset id="myfieldset" form="myform">
  <input id="myinput" name="myinput" />
  <input id="myinput2" name="myinput2" form="myform2" />
</fieldset>
&#13;
&#13;
&#13;