如果文本框为空,如何阻止表单提交?
这是我在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做。
答案 0 :(得分:8)
您无法停止使用PHP
提交表单。
PHP是服务器端,如果您的验证存在问题,则需要Javascript
来处理表单提交。您应该在客户端(JS)和服务器端(PHP)上处理验证。
所以不,如你所概述的那样只有PHP,表单将提交,然后你验证它。不能用PHP来阻止它(因为它只是用户的HTML)。
答案 1 :(得分:1)
你可以使用这个jquery代码:
$("#btnSubmitID").click(function(event){
if($("#txtID").val()==''){
event.PreventDefault();
alert("your message");
}
});
这是一个示例,您可以在发布到服务器之前使用这种方式验证表单。
答案 2 :(得分:0)
您可以使用XHR(称为AJAX)提交表单并使用php验证数据。 您仍然需要使用javascript提交XHR。
答案 3 :(得分:0)
您的javascript代码看起来很好,并且在空的时候不应该提交表单。但是,如果你想用PHP代码做,你也可以这样做,但是当表单无效(或为空)时,表单需要提交并返回到同一页面。
以下是示例代码
<?php
if ($_POST['comp'] == '')
{
header("location:yourpagename");
}
else
{
// process
}
?>
答案 4 :(得分:0)
现在为非伪代码答案。这是经过测试的经过验证的代码,详细阐述了我已发布的概念。
<?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>
答案 5 :(得分:-1)
以下是我用于处理表单的一般方法。
伪代码:
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