【问题标题】:Best way to handle locked/disabled fields on your forms?处理表单上锁定/禁用字段的最佳方法?
【发布时间】:2011-12-14 07:56:03
【问题描述】:

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

我不确定处理此问题的最佳方法。

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

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

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

我不确定处理这个问题的最佳方法,无论是从用户体验的角度还是从一般应用程序的角度。

【问题讨论】:

  • 您是否在服务器上使用任何类型的应用程序框架,或者这只是一个纯 HTML 问题?

标签: html forms user-interface user-experience


【解决方案1】:

用户界面的角度,不要向用户展示他们不需要看到的任何内容。并不是说没有只读信息的位置,而是应该考虑每个位以查看它是否需要在特定上下文中存在。更简单的表单可以减少混乱、减少用户时间和更快乐的用户。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    以这种方式从未遇到过任何用户体验问题。但无论如何,如果有人有更好的解决方案,请说出来。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 哦,我不知道您可以在客户端更改必需或禁用的属性。不过,我仍然需要显示这些值,所以我认为最用户友好的方式就是将它们呼应出来?
        • 如果您确实需要显示与它们相呼应的值是一个很好的解决方案。
        猜你喜欢
        • 2012-02-09
        • 1970-01-01
        • 2017-05-04
        • 2013-03-27
        • 2019-09-25
        • 1970-01-01
        • 1970-01-01
        • 2011-10-18
        • 1970-01-01
        相关资源
        最近更新 更多