百科

增加表单的隐藏域的HTML代码的type属性是

时间:2010-12-5 17:23:32  作者:休闲   来源:综合  查看:  评论:0
内容摘要:```html 直接给你答案:type="hidden"。别笑,这问题我面试过的人里十个有八个卡壳——他们知道要写隐藏域,但总把属性名记成display:none或者visibility,甚至有人写t

```html

直接给你答案:type="hidden"。增加别笑,表单这问题我面试过的隐的HL代人里十个有八个卡壳——他们知道要写隐藏域,但总把属性名记成display:none或者visibility,藏域甚至有人写type="hide"。属性浏览器不认这些,增加直接忽略掉,表单表单照样提交,隐的HL代但你的藏域隐藏数据就丢了。

上周帮朋友调试一个电商后台的属性订单筛选功能,前端死活传不过去用户ID。增加查了半天,表单发现他写的隐的HL代是<input type="text" style="display:none">。功能倒是藏域实现了,但代码审查时被安全团队打了回票——因为隐藏的属性text输入框会被浏览器自动填充,用户按F12就能改值,等于把内部参数暴露在明面上。换成<input type="hidden" name="user_id" value="1024">,浏览器不渲染、不参与自动填充、JS里也拿不到值,这才是正经的隐藏域。

有个细节容易被忽略:hidden类型的input依然会参与表单提交,但不会触发任何CSS样式。你没法给它加边框、改颜色,甚至display:block都无效——它就像个透明人,只干活不露面。这跟用text加隐藏样式有本质区别:后者在页面源码里肉眼可见,前者直接不生成可见元素。

再扯个冷知识。有些老系统里能看到<input type="hidden" name="token" value="abc123">这种写法用来防CSRF攻击。但现代框架早就不这么干了——因为隐藏域的值会完整暴露在HTML源码里,攻击者可以抓包读取。现在都用sessionStorage或者双提交cookie。所以如果你还在用隐藏域存敏感信息,趁早改。

倒是有一个场景至今顽固地依赖hidden:分页参数和排序状态。比如一个商品列表页,用户翻到第5页,点了“按价格排序”,然后提交筛选表单。如果不把page=5和sort=price塞进隐藏域,刷新后直接跳回第1页,体验烂到爆。这种业务状态用URL参数也行,但有些后端框架就是认准了表单里的hidden字段。

最后说个实战坑。如果你用JavaScript动态创建隐藏域,记得用document.createElement('input')后还要type = 'hidden',但别急着append到表单里——先检查表单里有没有同名input。我之前就犯过傻,一个页面里两个同名hidden,后端只拿到最后一个的值,排查了俩小时。所以写代码时多留个心眼:隐藏域虽然看不见,但它的名字和值,跟可见输入框一样重要。

```
最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap