如何使所有的输入字段(与100+输入字段已经存在)在单一形式作为“需要”

How to make all input fields (with 100+ input fields existed already) in single form as "required"?

本文关键字:输入 字段 单一形 需要 何使所 100+ 存在      更新时间:2023-09-26

如标题所示。

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

是否有一种方法来生成这种大小的形式使用PHP或javascript ?

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

编辑2:我使用jotform来生成这个表单。我已经拿到表格了。所以我不是问如何产生,但如何改变这一点。谢谢。

分为两部分:客户端和服务器端。

客户端

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

方法如下:

  1. 钩子窗体的submit事件

  2. 你循环通过表单的元素(在表单上的elements集合),并检查他们有一个非空白的value(对于input type="text"textarea),或者,在单选按钮的情况下,至少一个共享相同的name有一个checked属性,即true。(你也说过,你有一组复选框,你需要至少一个被选中,所以这将类似于单选按钮的东西,虽然你必须分组他们不同,也许使用相同的CSS类,这是在每个input作为className可用。)

  3. 如果您有任何您觉得没有充分填充的字段,则从事件处理程序返回submitfalse。理想情况下,你还可以向用户展示非常清晰的说明,告诉他们缺少什么。

大约有15000个"表单验证"插件可以帮助您完成此操作。HTML5现在也有一些通过标记的表单验证,但支持还没有达到你可以依赖的水平。

服务器端

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

这是在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;
}