【问题标题】:How do I check if the required fields in an html form are filled?如何检查 html 表单中的必填字段是否已填写?
【发布时间】:2010-09-28 02:21:24
【问题描述】:

我在 php 中有一个提交页面,其中包含一个指向同一页面的 html 表单。我希望能够检查表单中的必填字段是否未填写,以便通知用户。我想知道如何分别使用 php 和 javascript 来做到这一点。但是,我想这是一个常见问题,因此欢迎任何其他答案。

【问题讨论】:

    标签: php javascript validation forms


    【解决方案1】:

    检查你的 php 的发布部分

        if(isset($_POST['save']))
        {
                $fields=array();
                $fields['Nimi']   = $_POST['name'];
                $fields['Kool'] = $_POST['school'];
                $fields['Aadress'] = $_POST['address'];
                $fields['Telefon'] = $_POST['phone'];
                $fields['Email'] = $_POST['email'];
    
                foreach ($fields as $key => $val)
                {   if(trim($val)=='')
                    {   $errmsg=$key." is not filled!";
                        break;
                    }
                }
        }
    
    if($errmsg == '')
    { //do your saving here
      exit();
    }
    
    if(!isset($_POST['save']) || $errmsg != '')
    { //show your form here
     // and make it to return to the same page on submit
     //<input name="save" type="submit" value="Save" onclick="return true;">
    }
    

    【讨论】:

    • 是否也可以做 foreach($_POST as $k => $v)?
    【解决方案2】:

    就 JS 而言,您必须在提交之前进行检查。通常这涉及到将一些验证函数绑定到表单的 onsubmit 事件触发器,并且该验证函数将包含对您感兴趣的每个字段的一些测试。

    大多数 JS 库都有验证实现,可以为您完成大部分工作,这听起来对您来说可能是个好主意。谷歌搜索“客户端验证”将产生无限的结果,但这(我与库无关,请自行阅读和选择)应该让你开始*:

    http://blog.jquery.com/2007/07/04/about-client-side-form-validation-and-frameworks/

    http://tetlaw.id.au/view/blog/really-easy-field-validation-with-prototype/

    http://dojotoolkit.org/book/dojo-book-0-4/part-4-more-widgets/forms/validation

    *这是教你钓鱼计划

    【讨论】:

      【解决方案3】:

      为了额外的功劳,一旦您从 Riho 和 anakata 的回答中知道如何在 PHP 和 JavaScript 中执行此操作,然后构建一种以单一表单定义字段约束的方法,该表单既可以呈现为 JavaScript 以进行客户端验证,也可以在服务器上运行。

      由于您需要两者(为了用户方便而需要客户端,服务器端因为我们现在已经非常信任客户端了),因此从单一基础架构支持两者似乎是一个不错的主意。

      【讨论】:

        【解决方案4】:

        LiveValidation 库会为您提供很多帮助: http://www.livevalidation.com/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-26
          相关资源
          最近更新 更多