处理表单上锁定/禁用字段的最佳方法是什么?

时间:2011-10-24 17:29:17

标签: html forms user-interface user-experience

我需要用户只能编辑webform上的某些字段,而不能编辑其他字段。例如,这可能是由于用户权限造成的。

我不确定如何处理这个问题。

  1. 将表单属性设置为禁用。这个问题是禁用的字段没有被提交,所以我需要包含隐藏的表单字段,或者我需要在我的模型中满足这个要求(即只更新不应该更改的字段)

  2. 将属性设置为只读。可能比上述更好,因为这些字段会自动发布

  3. 根本不要使用表单字段 - 只需回显html中的var。可能包含隐藏的表单字段或仅更新模型中不应更改的字段

  4. 从UX的角度和一般的应用程序角度来看,我不确定处理这个问题的最佳方法。

4 个答案:

答案 0 :(得分:2)

您应该始终在服务器端的模型中处理此问题。我不知道您的申请是否会公开使用?但是,在客户端更改必需或禁用的属性以便能够使用表单元素相当容易。

答案 1 :(得分:0)

我的选择是#3或根本不显示表单字段:如果用户无法对它们执行任何操作,则不应显示它们。如果有一种方法可以在当前的交互中启用它,我会使用一个禁用字段 - 一个无法以任何显而易见的方式启用的禁用字段令人困惑,并且会让我觉得如果可以的话我做错了什么编辑它。

答案 2 :(得分:0)

我一直使用禁用/隐藏的组合解决方案,即

<input type="text" name="name-disabled" disabled="disabled" value="<?php echo $name; ?>" />
<input type="text" name="name" value="<?php echo $name; ?>" />

从未有过这样做的UX问题。但无论如何,如果有人有更好的解决方案,请说出来。

答案 3 :(得分:0)

UI角度,不要向用户显示他们不需要查看的内容。并不是说没有只读信息的地方,但应考虑每一位,以确定它是否需要在特定的上下文中存在。更简单的表单可以减少混淆,缩短用户时间,让用户更快乐。

我想这是一个意见问题,但我认为用户体验通常会被忽视,因为它通常应该是表单最重要的设计标准之一。

代码角度,你是对的,你必须适应一点。隐藏的表单字段当然是可能的,但它们很容易受到操纵 - 在您的特定情况下可能会或可能不会成为安全问题。

据推测,任何通过隐藏字段提交的内容都是已知值。您没有指定您正在使用哪个框架(如果有),但可能会在提交的表单数据进入数据库之前添加(并修改和验证)。如果用户无权更改字段,则可以在表单中省略该字段,并在将字段写入数据库之前添加其默认值。