【问题标题】:How to validate a php form with java script, that is on everypage of my site如何使用我网站的每个页面上的 java 脚本验证 php 表单
【发布时间】:2014-10-19 06:05:00
【问题描述】:

我遇到的问题是我试图让contact.php 来验证现在位于我网站每个页面底部的联系表单。只需验证一个页面并有一个硬 URL 将它们带回,它就非常有效。麻烦的代码是这样的。

/* In case of no valid input go back  */
if ($p1==""||$p2==""||$p3==""||$p5==""||$n0!=0||$f0<7||$NL==0||$p7=="") {
    header($_SERVER['HTTP_REFERER'].$report); 
}else{$report='noerror';}

我也试过这个:

/* In case of no valid input go back  */
if ($p1==""||$p2==""||$p3==""||$p5==""||$n0!=0||$f0<7||$NL==0||$p7=="") {
    header($_SERVER['PHP_SELF'].$report); 
}else{$report='noerror';}

这是适用于一页的原始代码:

/* In case of no valid input go back  */
if ($p1==""||$p2==""||$p3==""||$p5==""||$n0!=0||$f0<7||$NL==0||$p7=="") {
   header('Location:estimate_page.php?'.$report);
}else{$report='noerror';}

我可以为每个在页脚中有表单的页面创建一个新的“contact.php”页面,但如果我能做到这一点,那就太愚蠢了。任何想法

【问题讨论】:

    标签: javascript php html validation


    【解决方案1】:

    您正在考虑使用 javascript/jQuery 的正确方向——它将允许您在提交/更改页面之前捕获无效字段。更好的用户体验。仅在验证字段时提交。

    这里是如何使用 jQuery 进行简单的字段验证测试的链接:

    jsFiddle Demo

    HTML:

    One: <input type="text" id="f1"><br />
    Two: <input type="text" id="f2"><br />
    Three: <input type="text" id="f3"><br />
    Four: <input type="text" id="f4"><br />
    <br />
    <input type="button" id="mybutt" value="Go" />
    

    javascript/jQuery:

    var chkFld, arrAll = {'One':'f1','Two':'f2','Three':'f3','Four':'f4'};
    
    $('#mybutt').click(function() {
        var errMsg='', badFlds='', firstBad='';
        for(var key in arrAll){
            chkFld = '#'+arrAll[key];
            $(chkFld).removeClass('error');
            if ($(chkFld).val() ==''){
                $(chkFld).addClass('error');
                //alert('Please complete field ' + arrAll[key] );
                errMsg += '*' + key + '\n';
                if (firstBad=='') firstBad=chkFld;
            }
        }
        if (errMsg != '') {
            alert(errMsg);
            $(firstBad).focus();
        }
    }); //END mybutt.click
    

    注意上面的例子使用了jQuery,所以你必须引用jQ库(通常在head标签里面,像这样:)

    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    </head>
    

    编辑:

    下面是完整的 HTML 的样子:

    <?php
        //Any initial PHP code goes here
    ?>
    
    <html>
        <head>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    
            <script type="text/javascript">
                //javascript
            var chkFld, arrAll = {'One':'f1','Two':'f2','Three':'f3','Four':'f4'};
            $(document).ready(function() {
    
                    $('#mybutt').click(function() {
                        var errMsg='', badFlds='', firstBad='';
                        for(var key in arrAll){
                            chkFld = '#'+arrAll[key];
                            $(chkFld).removeClass('error');
                            if ($(chkFld).val() ==''){
                                $(chkFld).addClass('error');
                                //alert('Please complete field ' + arrAll[key] );
                                errMsg += '*' + key + '\n';
                                if (firstBad=='') firstBad=chkFld;
                            }
                        }
                        if (errMsg != '') {
                            alert(errMsg);
                            $(firstBad).focus();
                            return false;
                        }
    
                        //If it gets to here, it passed validation
                            $('#yourForm').submit();
                    }); //END mybutt.click()
    
                }); //END $(document).ready()
    
            </script>
        </head>
    <body>
    
        <form id="yourForm">
            One: <input type="text" id="f1" /><br />
            Two: <input type="text" id="f2" /><br />
            Three: <input type="text" id="f3" /><br />
            Four: <input type="text" id="f4" /><br />
        </form>
        <input type="button" id="mybutt" value="Click Me">
    
    </body>
    </html>
    

    请注意,使用上述场景,没有更多 PHP 代码将执行直到使用手动$('#yourForm').submit(); 语句提交表单。

    【讨论】:

    • 感谢您的回复,不过,表单正在验证我不知道如何让它循环回当前所在的页面而不是硬 URL,带有某种 php_self 或其他东西跨度>
    • 这取决于启动验证码的事件。如果您使用的是&lt;input type="submit"按钮,那么您必须在验证失败时输入return false;event.preventDefault();see here)才能返回页面而不提交。否则,表单将继续提交。当然,没有需要使用type="submit"按钮——在jQuery时代,你也可以使用&lt;input type="button" id="mybutton"控件。
    • 注意:如果使用 type="button" 输入元素,您只需在准备好提交时在适当的位置添加 jQuery 语句 $('#yourFormID').submit() 即可实际进行。 (即在成功验证后)Waaaay 更多的控制方式,是吗? type="submit" 输入是如此... 2010...
    • 好的,所以我把整个代码放错了,你也许可以告诉我如何让验证使用页面而不是硬 URL 来让用户返回到输入无效的页面。跨度>
    • /* 在没有有效输入的情况下返回 */ if ($p1==""||$p2==""||$p3==""||$p5== ""||$n0!=0||$f0
    猜你喜欢
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2015-01-05
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多