【问题标题】:Form Validation required at Client side? Or if same done at Server side is enough?客户端需要表单验证?或者如果在服务器端做同样的事情就足够了?
【发布时间】:2012-07-11 17:07:13
【问题描述】:

我正在构建一个基于 wordpress 的网站,并在其中放置了一个使用 jQuery 的表单。 但是,我刚刚开始了解 jquery,所以在使用它时我感觉不太好。我有两个问题。

第一个: 关于这个表单,是否需要在客户端和服务器端都验证表单?还是只在服务器端(php)就足够了?

第二个问题: 表单有一些字段,如果我单击一个按钮,可以复制这些字段。为此,我使用以下代码:

jQuery 代码:

(function($){

 $countForms = 1;

      $.fn.addForms = function(idform){

                    var myform = "<table>"+
                     "  <tr>"+
                     "     <td>Field A ("+$countForms+"):</td>"+
                     "     <td><input type='text' name='fielda["+$countForms+"]'></td>"+
                     "     <td>Field B ("+$countForms+"):</td>"+
                     "     <td><textarea name='fieldb["+$countForms+"]'></textarea></td>"+
                     "     <td><button>remove</button></td>"+
                     "  </tr>"+
                     "</table>";



                    if(idform=='mybutton'){
                        alert(idform);
                        myform = $("<div>"+myform+"</div>");
                        $("button", $(myform)).click(function(){ $(this).parent().parent().remove(); });
                        $(this).append(myform);
                        $countForms++;
                    }

      };
})(jQuery);         



$(function(){
    $("#mybutton").bind("click", function(e){
    e.preventDefault();
    var idform=this.id;

        if($countForms<3){
            $("#container").addForms(idform);
        }       
    });
});

HTML:

<div id="container"><div>
<form method="post" name="b" >
<table>
    <tr>
        <td>Field A</td>
        <td><input type='text' name='dadoA'></td>
        <td>Field B</td>
        <td><textarea name="dadoB"></textarea></td>
        <td><button>remove</button></td>
    </tr>
</table>
</div>
</div>
<button id="mybutton">add form</button>

<div align="center">
<p><input type="submit" value="Registar" name="registar"></p>
</div>

我知道如何使用 php 来验证这些字段。我不知道当我复制它们时如何验证。
我的意思是,我有这个包含 2 个字段的表单,我复制它们并假设用户用错误/不接受的值填充这个新的(第三个)字段。
单击“提交”后,如何使用 PHP 验证输入、刷新页面、回显 2 个原始字段和重复的字段(用户重复),所有这些字段都由用户填写各自的输入并显示错误消息?

【问题讨论】:

    标签: php jquery forms wordpress


    【解决方案1】:

    理想情况下,从用户体验的角度来看,您应该尝试验证客户端,然后仔细检查服务器端。提交表单只是发现有问题是非常烦人的。在提交之前显示错误/问题总是一个加号。

    【讨论】:

    • 所以你建议jquery加php是这样吗?
    • 我正要回答,但这个问题正是我要说的。不一定需要验证。但是,我认为在没有服务器端验证的情况下处理表单数据是不明智的。客户端验证只能用于改善用户体验。
    • 是的,jquery 可以。这个插件我用过几次。 bassistance.de/jquery-plugins/jquery-plugin-validation我确定还有其他人。听起来你已经涵盖了 PHP 方面,所以我不会解决这个问题。
    • 感谢您的建议。现在我遇到了 php 验证问题:stackoverflow.com/questions/11441981/…(如果你能给我帮助,我将不胜感激)之后我会考虑 jquery 验证。
    【解决方案2】:

    这可能不是您想要的,但您可以使用以下代码来简化验证:Live Validation

    这是一个 javascript 验证脚本。我喜欢它,它精简、快速且非常易于使用。有关于如何使用它的完整文档,并且都是在客户端运行的。

    【讨论】:

    • 我稍后会在这里看看并告诉一些事情:P
    • 您如何验证以拒绝此实时验证中的号码?我做错了:/
    【解决方案3】:

    我觉得Chief Alchemist's Answer第一个问题回答得很好。要回答第二个问题,您的带有可变字段的表单应作为数组发布。当您处理和验证表单数据时,您应该遍历每个数组条目。

    【讨论】:

    • 好的,那我想我会先尝试使用 php 进行验证,困难的部分将是维护数组,然后我会考虑客户端,将看看实时验证。
    • 你能给我一个链接来展示如何处理 $_Post 中的数组吗?通常我会使用: $name = $_POST['name'];但是有一个数组...
    • stackoverflow.com/questions/2433727/… 回答有关以数组形式提交表单并对其进行处理的问题。
    • 谢谢,昨天我自己在寻找答案,我发现了那个帖子。无论如何,现在我遇到了一个更大的问题,我在互联网上也找不到答案:stackoverflow.com/questions/11441981/…我的 $_POST 没有捕捉到 jquery 生成的输入值。你能给我一个帮助吗?我不能继续前进,因为这个我快疯了。
    • 错误链接,我想参考这个链接:stackoverflow.com/questions/11449890/…
    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 2011-10-17
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多