【问题标题】:alert message on submit if text box is empty using PHP如果文本框为空,则使用 PHP 提交时发出警报消息
【发布时间】:2012-01-10 08:36:47
【问题描述】:

如果文本框为空,如何防止表单提交?

我已经在 J​​SP 中使用警报消息成功完成了。

Javascript:

 function validate()
 {
   var x=document.forms["Form1"]["comp"].value;
   if (x==null || x=="")
   {
     alert("comp cannot be blank");
     return false;
   }

   <form name="Form" action="welcome.php" onsubmit="return validate()"  method="post">
      <input type="text" name="comp">

我怎样才能使用 PHP 做同样的事情?因此,每当用户在不输入文本的情况下提交时,它应该通过 javascript alert() 消息向用户发送消息。

我可以显示警报消息:

echo  '<script language="javascript">alert("comp cant blank");</script>';

但是我怎样才能给出条件呢?上面有什么需要做的改变,请把它写成代码形式。我只能在 PHP 中做。

【问题讨论】:

    标签: php javascript validation


    【解决方案1】:

    现在是非伪代码答案。这是有效的、经过测试的代码,详细说明了我已经发布的概念。

    <?php
    function formWasPosted()
    {
        return array_key_exists( 'comp', $_POST );
    }
    // -------
    function validate( &$errors )
    {
        if ( $_POST['comp'] == '' )
        {
            $errors['comp'] = 'cannot be blank';
        }
    
        return count( $errors ) == 0;
    }
    // -------
    function getError( $fieldName, $errors )
    {
        $out = '';
    
        if ( array_key_exists( $fieldName, $errors ) )
        {
            $out = '<span class="errorMsg">' . $errors[$fieldName] . '</span>';
        }
    
        return $out;
    }
    //------------------------------------------------------------------------
    // $errors will be passed to our validate function so we can set error messages per field if desired.
    $errors = array();
    $formMsg = '';
    
    if ( formWasPosted() )
    {
        if ( validate( $errors ) )
        {
            // do processing here
            header( 'Location: http://www.example.com/success' );
            exit();
        }
        $formMsg = '<div class="errorNotice">There were problems with your submission</div>';
    }
    ?>
    <html><head>
    <script type="text/javascript">
        function validate()
        {
            var x=document.forms["Form1"]["comp"].value;
            if (x==null || x=="")
            {
                alert("comp cannot be blank");
                return false;
            }
        }
    </script>
    <style>
    .errorMsg, .errorNotice { color: red; }
    .errorNotice { font-size: 150%;}
    </style>
    </head>
    <body>
        <?php echo $formMsg; ?>
        <form name="Form" action="welcome.php" onsubmit="return validate()" method="post">
            <label for="comp">Comp <?php echo getError( 'comp', $errors ); ?></label>
            <input id="comp" type="text" name="comp">
        </form>
    </body>
    </html>
    

    【讨论】:

    • 只是为了让我们清楚这一点......没有办法阻止使用 php 提交表单,最佳做法是根据表单提交进行验证和选择性处理。跨度>
    【解决方案2】:

    您的 javascript 代码看起来不错,它不应该在表单为空时提交。但是,如果您想从 PHP 代码中进行操作,您也可以这样做,但是当表单无效(或为空)时,表单需要提交并返回到同一页面。

    这里是示例代码

    <?php
      if ($_POST['comp'] == '')
       {
        header("location:yourpagename");
      }
    else
    {
     // process
    }
    ?>
    

    【讨论】:

    • 不应提交表单。它只是向用户发送消息,文本框不能为空。我该怎么做?
    • 当你从javascript代码返回false时,它不应该提交。
    【解决方案3】:

    这是我用于处理表单的一般方法。

    伪代码:

    Has Form Been Submitted?
        Is form valid?
            process form (db insert/update/delete, other operation here
        Else
            Print form with error messages and optionally a javascript alert
        End is form valid
    Else
        Print form without error messages
    End has form been submitted
    

    【讨论】:

    • Uhm..so OP要求php实时验证,你给他伪代码验证算法? :/ 请大家仔细阅读问题..
    • 如果您使用 POST,请检查 $_POST['field_name'] - 您不能在 PHP 中使用 DOM 寻址。
    • @damien 我从他的问题中推断出他的意图 - 他打算阻止处理表单提交。由于 OP 与 JSP 的历史,这个问题似乎很困惑。我只是想对我的经历有所帮助。如果有人提出更好的答案,我可以接受。
    【解决方案4】:

    你可以从这个 jquery 代码中使用:

    $("#btnSubmitID").click(function(event){
         if($("#txtID").val()==''){
              event.PreventDefault();
              alert("your message");
         }
    });
    

    这是一个示例,您可以在发布到服务器之前使用这种方式验证您的表单。

    【讨论】:

    • 你误解了这个问题,他并没有要求 javascript 验证(因为他已经这样做了)
    【解决方案5】:

    您可以使用 XHR(称为 AJAX)提交表单并让 php 验证数据。 您仍然需要使用 javascript 提交 XHR。

    【讨论】:

      【解决方案6】:

      您不能使用PHP 阻止表单提交。

      PHP 是服务器端,如果您的验证出现问题,您需要有Javascript 来处理表单提交。您应该在客户端 (JS) 和服务器端 (PHP) 上处理验证。

      所以不,正如您概述的那样,仅使用 PHP 是不可能的,表单将提交,然后您对其进行验证。不能用 PHP 来阻止它(因为它对用户来说只是 HTML)。

      【讨论】:

      • 即使您确实使用 PHP 验证它(我在想一个 ajax 提交和服务器端验证以防止表单被提交)您仍然需要再次验证实际的表单提交,因为一个人使用 firebug 或没有 javascript 的浏览器仍然可以发送错误数据。
      猜你喜欢
      • 2021-09-07
      • 2011-08-08
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多