折叠输入类型隐藏div

时间:2013-12-13 08:47:57

标签: html css

GitHub布局使用这样的结构来保护表单的CSRF(例如,可以在主页上的注册表单中看到):

<div style="margin:0;padding:0;display:inline">
    <input type="hidden" value="somerandombase64" name="authenticity_token">
</div>

使用内联样式<input type="hidden" ...>折叠<div>的原因是什么? 这不是<div>多余的吗?

2 个答案:

答案 0 :(得分:2)

如此处所述:LINK

  

Rails'表单标记帮助器有助于将隐藏字段放入真实性标记中。不幸的是,它将隐藏的字段包裹在div中!因此,即使您的表单具有style =“display:inline”,div也不会......并且您将无法显示不强制换行的表单。

换句话说,防止换行的最安全方法是将这些样式margin:0;padding:0;display:inline添加到包装器div。

答案 1 :(得分:1)

根据DTD for HTML 4,[有效]是必要的。虽然form元素的后代是什么并不重要,但直接子元素必须是块级元素。

针对W3C Validator Service运行此操作以获取进一步证明:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
    <form action="" method="get">
        <input type="hidden">
    </form>
</body>
</html>

与此相反:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
    <form action="" method="get">
        <div>
            <input type="hidden">
        </div>
    </form>
</body>
</html>