一位程序员告诉我,在我的HTML代码中使用隐藏字段是“不好的做法”。基本上我有一个无序列表,用户根据他们选择的类别选择一个项目(类别是图片)。然后调用javascript将隐藏字段设置为用户选择的值,这样我就可以在表单提交时发送它。这是真正糟糕的做法,我还有另一种方法吗?
答案 0 :(得分:5)
隐藏字段存在,因此可以在不显示输入的情况下在表单中设置值,我无法理解使用它们的不良做法。如果你需要创建一个自定义小部件并通过表单发送它的值,这是最简单的方法,你仍然可以使用动态选择列表的选择按钮,但你必须做丑陋的黑客,使界面看起来很漂亮。
答案 1 :(得分:4)
这是一种非常常见的做法。在您的情况下,我能想到的唯一问题是,如果访问者禁用了JavaScript,它就会中断,因此您可能需要回退。
答案 2 :(得分:3)
如果您想提交表单并需要传递一些未包含在可见表单字段中的简单值,那么隐藏字段可能是最古老,最可靠,最干净的字段。
考虑其他选择:
无用:不要传递任何隐藏的东西。
差:抽象,就像ASP.Net viewstate一样,它使用隐藏字段但是污染了请求模型(并且可以添加一堆不需要的数据,除非你小心 - 大多数人都没有)。 / p>
BAD:传递查询字符串上的所有表单值。这通常是非RESTful的,并且可能是完全有害的(用户书签是执行意外操作的查询字符串)。
可能:使用AJAX手动POST值。假设您只想执行异步操作,这可能是一个非常有效的实现。
可能:服务器处理更改的完全往返(可能是支持没有JavaScript的用户的唯一方法)。
答案 3 :(得分:2)
将HTML值存储在HTML DOM中通常是一种不好的做法。您应该尝试创建存储在javascript环境中的列表。
window.myList = new Array();
我建议您在有很多东西时使用Underscore.js甚至Backbone.js之类的内容。
如果您只在提交中使用这些数据,那么您的案例似乎是合法的。
答案 4 :(得分:2)
将隐藏字段用于必须安全的信息是不好的做法。当没有安全问题时,使用隐藏字段通常很好。