сообщение об отправке, если текстовое поле пусто с использованием PHP - PullRequest
3 голосов
/ 01 декабря 2011

Как запретить отправку формы, если текстовое поле пустое?

Это я успешно выполнил в JSP, используя предупреждающее сообщение.

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.

Ответы [ 6 ]

8 голосов
/ 01 декабря 2011

Вы не можете остановить отправку формы, используя PHP.

PHP на стороне сервера, вам необходимо иметь Javascript для обработки отправки формы, если есть проблема с вашей проверкой.Вы должны обрабатывать проверку как на стороне клиента (JS), так и на стороне сервера (PHP).

Так что нет, это невозможно, если использовать только PHP, как вы обрисовали в общих чертах, форму БУДЕТ отправить, затем вы подтвердите ее.Не могу остановить это с помощью PHP (так как это просто HTML для пользователя).

1 голос
/ 01 декабря 2011

вы можете использовать из этого кода JQuery:

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

это образец, вы можете проверить свою форму таким образом, прежде чем отправлять на сервер.

0 голосов
/ 01 декабря 2011

А теперь ответьте не на псевдокод. Это работает, проверенный код, который развивает концепции, которые я уже опубликовал.

<?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>
0 голосов
/ 01 декабря 2011

Ваш код javascript выглядит нормально, и он не должен отправлять форму, когда она пуста.Однако, если вы хотите сделать из кода PHP, вы можете сделать то же самое, но форму необходимо отправить и вернуться на ту же страницу, когда она недействительна (или пуста).

Вот пример кода

<?php
  if ($_POST['comp'] == '')
   {
    header("location:yourpagename");
  }
else
{
 // process
}
?>
0 голосов
/ 01 декабря 2011

Вот общий подход, используемый мной для обработки форм.

Псевдокод:

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
0 голосов
/ 01 декабря 2011

Вы можете отправить форму, используя XHR (известный как AJAX), и php проверит данные. Вам все равно нужно будет отправить XHR, используя javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...