0

我有一个带有表单的简单 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>";
}

?>
4

3 回答 3

2

您需要创建一个 php 文件并编写您的验证,然后,您需要使用 AJAX 调用此页面,然后发送所需的参数

$.get("validation.php", { fieldname: "firstname", value: $("#firstname").val(); },
   function(data){
     if(data){
     }
     else{
     }
   });

验证.php

<?php
$fieldname = $_GET['fieldname'];
$fieldvalue = $_POST['value'];

if($fieldname == 'firstname'){
 if(!preg_match('/^[a-zA-Z0-9]+$/', $fieldvalue)){
   echo 'Notvalid';
 }
}
if($fieldname == 'email'){

}
?>
于 2013-02-02T11:59:59.560 回答
1

你不能在js中使用php。使用 js 正则表达式,或 jq 验证插件:http ://docs.jquery.com/Plugins/Validation

于 2013-02-02T11:54:21.927 回答
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 代码,这将是您可以实现它的少数方法之一。

于 2013-02-02T12:06:08.007 回答