【问题标题】:25 HTML fields - different fields for different user level?25 个 HTML 字段 - 不同用户级别的不同字段?
【发布时间】:2014-07-26 15:30:58
【问题描述】:

所以我有 25 个 HTML 字段(文本、下拉菜单、选择等...) 我需要这些根据用户的级别向用户显示,有些可能显示有些可能不显示,到目前为止,我想出的唯一选项是使用 if 语句在加载字段之前检查用户级别,例如:

if(userLevel == 1 || userLevel == 2){
echo("<input type='text' name='phoneNumber'/>");

但是在我这样做之后,代码会变得很长而且很混乱,有没有办法给每个字段提供某种 ID 并在页面加载时根据用户级别加载具有特定 ID 的字段?

对于 JS 字段验证也是如此,无论如何都要给每个字段 id(如电子邮件、url)以便它自动得到验证,而不是在每个字段上编写和调用 onChange?

【问题讨论】:

  • "有没有办法给每个字段某种 ID 并在页面加载时根据用户级别加载具有特定 ID 的字段?" -- 我相信你也必须检查用户级别的条件并调用必要的代码块。
  • 是的,我讨厌出于这个原因构建 html 表单,太乏味了。我也喜欢返回带有 php value="&lt;?php if(isset($phone)){echo $phone;}?&gt;" 的字段,以防用户错过了他们不必重新输入所有内容的内容。

标签: javascript php forms http-post


【解决方案1】:

有很多方法。

对于快速解决方案,您可以使用数组和 for 循环,例如:

function dumpForm($userLevel) {
    $fields = array(                                                                                                                                                   
        'name'      => array(
            'type'  => 'text',
            'level' => 2,
            'value' => ''
        ),
        'phone'     => array(
            'type'  => 'text',
            'level' => 1,
            'value' => ''
        ),
        'email'     => array(
            'type'  => 'text',
            'level' => 1,
            'value' => 'email@example.org'
        )
    );

    foreach ($fields as $name => $data) {
        extract($data);
        if ($level <= $userLevel)
            echo "<input type='$type' name='$name' value='$value'/>\n";
    }
}

echo "\nForm (level 1):\n";
dumpForm(1);

echo "\nForm (level 2):\n";
dumpForm(2);

您还可以在数组中添加一个额外的字段以进行 javascript 验证,或添加一些基于 type 字段的逻辑(例如,当类型为 number 时,生成带有数字验证的 text 条目)。

【讨论】:

    猜你喜欢
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2018-08-17
    • 2011-10-13
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多