我有一个带有表单的简单HTML文件。
<form action="register.php" method="get" id="submitform">
First Name:
<input type="text" class="fb-input" name="fname" id="firstname" />
<br>
<div class="fb-error">
</div>
<input type="button" name="signupBtn" id ="sub" value="Sign upw">
</form>
当我按下提交按钮时,如果该字段为空,将在jquery处检查。
$(document).ready(function(){
$("#sub").click(function(){
register();
});
});
function register(){
var firstname=$("#firstname").val();
if(firstname==""){
$(".fb-error").show().html("You must fill the fields.");
}else{
$(".fb-error").hide();
$("#submitform").submit();
}
}
然后在检查之后,它将被提交到php文件以进一步检查表单中输入的字符,如果找到无效字符,它将会回显。
我想要的是,在php文件中提交页面后我正在进行的检查将在jquery中传输。例如:
function register(){
var firstname=$("#firstname").val();
if(...){
<?php
if(preg_match(....)){....}
?>
}else{
.....
}
}
我尝试过这个并没有用。我想我不能把php放在jquery里面。我想把php放在jquery中的原因是我能够在HTML的div部分显示错误消息,因为一旦我提交页面,它会转到另一个空白页面,其中php的错误消息显示起来。
我正在做的就像facebook的注册,一旦你提交它并输入了错误的字符,就会在底部显示一条错误信息。我们需要使用php,jquery只是可选的。
有人可以帮我吗?或者可以建议一个更好的方法来做到这一点?
更新:
Html代码:
<html>
<head>
<title>Facebook Registration</title>
</head>
<body>
<form action="register.php" method="get" id="submitform">
First Name:
<?php $fname = isset($_POST['fname']) ? $_POST['fname'] : ''; ?>
<input type="text" class="fb-input" name="fname" value="<?php echo $fname; ?>">
<br>
<div class="fb-error">
</div>
<input type="submit" name="signupBtn" id ="sub" value="Sign upw">
</form>
Php文件:
<?php
$fname=$_GET['fname'];
if((preg_match("/^[a-zA-z]{1,}$/",$fname))){
echo "registered";
}
else{
var_dump($_POST);
echo "<form id='retForm' method='post' action='index.php'>";
echo "<input type='hidden' name='fname' value='$_POST[fname]'>";
echo "<script>$(document).ready(function() { $('#retForm').submit() });</script>";
}
?>
答案 0 :(得分:2)
您需要创建一个php文件并编写验证,然后,您需要使用AJAX调用此页面然后发送所需的参数
$.get("validation.php", { fieldname: "firstname", value: $("#firstname").val(); },
function(data){
if(data){
}
else{
}
});
<强> validation.php 强>
<?php
$fieldname = $_GET['fieldname'];
$fieldvalue = $_POST['value'];
if($fieldname == 'firstname'){
if(!preg_match('/^[a-zA-Z0-9]+$/', $fieldvalue)){
echo 'Notvalid';
}
}
if($fieldname == 'email'){
}
?>
答案 1 :(得分:1)
你不能在js中使用php。使用js regexps或jq验证插件:http://docs.jquery.com/Plugins/Validation
答案 2 :(得分:1)
你在PHP中可以做的很简单。您可以在另一页上的PHP脚本上验证表单,如果发现任何错误,可以使用$ _POST变量重定向表单。
表单上的内容
<?php $fname = isset($_GET['fname']) ? $_GET['fname'] : ''; ?>
<input type="text" class="fb-input" name="fname" value="<?php echo $fname; ?>">
现在,在您的register.php中,您可以编写此代码段
<?php
if(isset($_GET['signupBtn'])) {
//do validation on $_GET['fname']
//if the validation fails, send it back to the form with the value like this
echo "<form id='retForm' method='GET' action='originalForm.php'>";
echo "<input type='hidden' name='fname' value='$_GET[fname]'>";
echo "<script>$(document).ready(function() { $('#retForm').submit() });</script>";
}
else {
//proceed with registration
}
?>
这会将fname
作为$_GET
变量的一部分发回,并将显示在表单输入中。您也可以使用AJAX调用进行验证,但由于您希望最小化jQuery代码,这将是您实现它的少数几种方法之一。