【问题标题】:How to make all input fields (with 100+ input fields existed already) in single form as "required"? [closed]如何使所有输入字段(已经存在 100 多个输入字段)以单一形式作为“必需”? [关闭]
【发布时间】:2013-05-29 08:45:13
【问题描述】:

正如标题所说。

我有一个包含大约 100 个输入字段的简单表单,我相信应该有一种替代的“快捷方式”方法来简单地输入所有 100 个字段。

有没有办法使用 PHP 或 Javscript 生成这种大小的表单?

编辑:对不起,伙计们。让我更清楚一点。我有一个关于将 10 页长的调查转换为 Web 表单的项目。结果,我最终得到了一个包含大约 100 个输入字段的表单。我希望通过使用 jQuery、php 或 javascript 使它们全部成为“必需”,而无需将所有元素更改为一个(将“必需”放入所有标签中)。希望这能消除一些疑虑。

编辑 2:我使用 jotform 生成此表单。所以我手头已经有了表格。所以我不是在问如何生成,而是如何改变它。谢谢。

【问题讨论】:

  • 如何将复选框设为“必需”?
  • 伙计们......问题是我有 100 多个输入...... @RMcLeod
  • 作为至少使用需要勾选一项。 @T.J.克劳德
  • Bob,你应该在问之前开始使用谷歌进行研究,有很多关于如何做到这一点的教程,如果你是 php/html 新手,请继续查看w3schools.com 那里有很多你可以使用的信息,如果你不是那么新,选择一个框架 CodeIgniter,Yii... 并坚持使用它,直到你制作一个项目或其他东西。
  • 使用表单检查器? mootools.floor.ch/en/demos/formcheck

标签: php javascript html forms input


【解决方案1】:

您可以分两部分执行此操作:客户端和服务器端。

客户端

纯粹是为了让 UI 更易于使用,因为所有数据也必须在服务器上进行验证。但让 UI 更易于使用很重要。

这是你如何做到这一点的:

  1. 你钩住了表单的submit事件。

  2. 您遍历表单的元素(表单上的elements collection)并检查它们是否有非空白value(对于input type="text"textarea),或者,在收音机的情况下按钮,至少有一个共享相同name 的按钮具有checked 属性,即true。 (您还说过您有一组复选框,您至少需要检查一个复选框,因此这类似于单选按钮的内容,尽管您必须对它们进行不同的分组,可能使用相同的 CSS 类,即在每个input 上都可用className。)

  3. 如果您觉得有任何字段没有被充分填写,您可以从submit 的事件处理程序中返回false。理想情况下,您还可以向用户非常清楚地说明缺少的内容。

有大约一万五千个“表单验证”插件可以帮助您解决这个问题。 HTML5 现在还通过标记进行了一些表单验证,但支持还没有达到您可以依赖的水平。

服务器端

当您收到表单时,您必须重新验证是否存在所有必需的信息,因为可以绕过客户端验证。当然,您如何执行此操作取决于表单的内容,但变量将通过$_POST(如果您的表单是method="POST")或$_GET(如果它是method="GET")提供。如果表单涉及更改任何内容,您自然会使用POST

【讨论】:

  • 非常感谢。我什至不知道我可以遍历表单的所有元素。会谷歌这件事。
【解决方案2】:

目前这是在 HTML5 的帮助下完成的。试试:

<input type="text" required="required" name="name" maxlength="5/>
<textarea required="required ... ></textarea>

等等……

然后你必须在提交表单后使用 PHP 检查字段是否真的为空:

if(empty($_POST['name']))
    $messages[] = 'Please provide a name';

所以强制用户输入数据是 HTML 和 PHP 代码的结合。您还可以使用 JavaScript 等。用于提醒字段是否仍为空且用户正在尝试提交表单。

编辑:

我看到你已经编辑了帖子。您需要编写自己的控件,该控件可以生成输入、文本区域、选择...例如:

public static function addControl($type, $name, $options, $required = false, $howMuch = 1) 
{
    if($required)
        $required = 'required="required"';

    $name = 'name="'.$name.'"';

    $control = '';
    $controls = '';

    switch($type)
    {
        case 'input':
            $options = 'value="'.$options.'";
            $control = '<input type="text" '.$name.' '.$required.' '.$options.' />
        break;
        case ...:
    }
    if($howMuch > 1)
    {
        for($i = 1; $i < $howMuch; ++$i)
        {
            $controls .= $control;
        }
    }
    else 
    {
        $controls = $control;
    }

self::$controls[] = $controls;
}

在显示所有组合 html 代码的脚本方法的末尾...

【讨论】:

  • 谢谢!我将尝试使用此方法循环遍历我的所有元素。
猜你喜欢
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多