fieldset元素的name属性有什么作用?

时间:2015-08-07 18:52:49

标签: html html5

我理解<fieldset>的一般语义,以及name上的<fieldset>属性如何用于为一组输入赋予意义。 W3 wiki有很多例子。

但是,我不明白提交表单时name元素的<fieldset>属性是做什么的。根据{{​​3}},name与表单数据一起提交。 MDN还提到它是元素的名称,用于表单提交。

虽然在name上尝试了<fieldset>属性,但我认为它不会与其余的表单数据一起提交。我不清楚它是否有语义之外的任何用途。

name元素上的<fieldset>属性是否应该与表单数据一起提交?如果是这样,它有价值吗?它做了什么?

2 个答案:

答案 0 :(得分:2)

  

但是,我不明白提交表单时<fieldset>元素的名称属性是什么。

没有

你自己测试了一下:

  

虽然在<fieldset>上尝试使用name属性,但我认为它不会与其余的表单数据一起提交。

在规范摘要中(可能是从input某处复制)似乎是一个错误,它已被复制到MDN参考上。

rules for form submission没有提及字段集。

  

W3C还提到它是元素的名称,用于表单提交。

完整的引用是:

  
    

name - 用于表单提交和form.elements API

的表单控件的名称   

form.elements API(以及getElementsbyName等通用DOM API)是该属性产生任何实际效果的唯一位置。

答案 1 :(得分:2)

这对我来说有点奇怪,但似乎目的是让你可以通过myForm.elements访问它,就像你可以使用任何其他表单元素一样。字段集确实与表单函数的方式有关(例如,making a fieldset "disabled"将应用于其所有子窗体控件),所以我想这是某些开发人员可能想要做的事情。

我非常确定这是它的唯一用途。字段集不具有值(即使您设置了一个值,您的浏览器也应该忽略它而不提交它),因此它永远不会包含在发送到服务器的内容中。

这是我试图理解的一个小测试:

&#13;
&#13;
var fruitform = document.getElementById("fruitform");
var output = document.getElementById("output");

function log(msg) {
  output.innerHTML = output.innerHTML + "\n" + msg;
}

log("*** fruitform.elements ***")
log(JSON.stringify(fruitform.elements));
log("");
&#13;
<h2>test form</h2>
<!-- the 'action' url' is just a page that outputs any GET parameters you pass to it -->
<form action="http://www.w3schools.com/html/action_page.php" id="fruitform">
  <fieldset name="facts">
    type:
    <input type="text" name="type" value="banana">
    <br><br>
    color:
    <input type="text" name="color" value="yellow">
  </fieldset>
  <br>
  <input type="submit">
</form>

<!-- place to put some output -->
<h2>output</h2>
<pre id="output">
</pre>
&#13;
&#13;
&#13;

here's the same demo on codepen