如何将所有输入字段(已有100多个输入字段已经存在)以单一形式显示为“必需”?

时间:2013-05-29 08:45:14

标签: php javascript html forms input

正如标题所说。

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

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

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

编辑2:我使用jotform生成此表单。所以我已经掌握了表格。所以我不会问如何生成,但如何改变这一点。感谢。

2 个答案:

答案 0 :(得分:1)

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

客户端

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

以下是您执行此操作的方法:

  1. 您挂钩了表单的submit事件。

  2. 您遍历表单的元素(表单上的elements collection)并检查它们是否为空valueinput type="text"textarea )或者,对于单选按钮,至少有一个共享相同name的{​​{1}}属性为checked。 (你还说你有一组复选框,你至少需要检查一个,所以这类似于单选按钮的东西,虽然你必须以不同的方式对它们进行分组,也许使用相同的CSS类,这是每个true上提供input。)

  3. 如果您有任何感觉不充分的字段,则从className的事件处理程序返回false。理想情况下,您还会向用户显示有关缺少内容的非常明确的说明。

  4. 大约有一万五千个“表单验证”插件可以帮助您解决此问题。 HTML5现在也通过标记进行了一些表单验证,但是支持还不是你可以依赖的级别。

    服务器端

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

答案 1 :(得分:0)

这是在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,eq。用于警告字段是否仍为空并且用户正在尝试提交表单。

编辑:

我看到你编辑了帖子。你需要编写自己的控件,它可以生成输入,textareas,选择......例如:

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代码......