-1

直到现在我有 HTML

<form id="account_reg" action="reg.php" method="post">
    <div id="response"></div>
    <div class="input">
      <label>Login</>
      <input name="login" type="text" class="required" id="login" size="30"/>
    </div>

    <div class="input">
    <label>Password</>
    <input name="password" type="text" class="required" id="password" size="30"/>
    </div>

    <div class="input">
    <label>Repeat Password</>
    <input name="rpassword" type="text" class="required" id="rpassword" size="30"/>
    </div>

    <div class="input">
    <label>Email</>
    <input name="email" type="text" class="required" id="email" size="30"/>
    </div>

    <div class="button">
    <input type="submit" name="send" id="send" value="Send"/>
    </div>

    <div class="input">
    <input type="hidden" name="honeypot" id="honeypot" value="http://"/>
    <input type="hidden" name="humancheck" id="humancheck" class="clear" value=""/>
    </div>
</form>

我的 PHP 我在服务器端进行了一些验证。`

include("dop/config.php"); //includ Db connect

    $login = ($_POST['login']);
    $password = ($_POST['password']);
    $rpassword = ($_POST['rpassword']);
    $email = ($_POST['email']);
    $humancheck = $_POST['humancheck'];
    $honeypot = $_POST['honeypot']; 
if ($honeypot == 'http://' && empty($humancheck)) { 
$error_message = '';
$reg_exp = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9-]+\.[a-Za-Z.](2,4)$/";
if(!preg_match($reg_exp, $email)){
$error_message .="<p>A Valid email is required</p>";
}
if(empty($login)){
$error_message .="<p>enter login</p>";
}
if(empty($password)){
$error_message .="<p>Enter password</p>";
}
if(empty($rpassword)){
$error_message .="<p>Enter password again</p>";
}
if($password != $rpassword){
$error_message .="<p>password mut match</p>";
}
} 
else {
$return['error'] = true;
$return['msg'] = "<h3>There was a problem with your submission. Please try again.</h3>";    
    echo json_encode($return);
} 

我的带有验证的 JS。

$('#send').click(function(e)
    {
        e.preventDefault();
        var valid = '';
        var required =' is required.';
        var login = $('#account_reg #login').val();
        var password = $('#account_reg #password').val();
        var rpassword = $('#account_reg #rpassword').val();
        var email = $('#account_reg #email').val();
        var honeypot = $('#account_reg #honeypot').val();
        var humancheck = $('#account_reg #humancheck').val();

        if(login = ''){
            valid ='<p> Your Name '+ required +'</p>';
        }
        if(password='' || company.length<=6){
            valid +='<p> Password '+ required +'</p>';
        }
        if(rpassword != password){
            valid +='<p> password must match </p>';
        }
        if(!email.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i))
        {
            valid +='<p> Your Email' + required +'</p>';
        }


        if (honeypot != 'http://') {
            valid += '<p>Spambots are not allowed.</p>';    
        }

        if (humancheck != '') {
            valid += '<p>A human user' + required + '</p>'; 
        }
        if(valid !=''){
            $('#account_reg #response').removeClass().addClass("error")
                .html('<strong> Please Correct the errors Below </strong>' + valid).fadeIn('fast');
        }
        else{
            //$('form #response').removeClass().addClass('processing').html('Processing...').fadeIn('fast');
            var formData = $('#account_reg').serialize();
            $('#send').val("Please wait...");
            submitForm(formData);
        }
    });
function submitForm(formData) {

$.post('reg2.php',formData, function(data){
    //console.log(data);
    $('#send').val("Send");
    if (data === '1') {
        alert('ok!');
    } else {
        alert('wrong shit');
    }
});
};

我还没有做 MySQL 部分的插入和检查帐户是否已经注册。

我遇到的第一个问题是 Click 事件在 reg.php 上重定向我,即使我使用e.preventDefault();

如果有人知道创建注册表单的好教程或任何建议。

4

3 回答 3

2

表单已提交,这就是您访问 reg.php 的原因。从我看到的情况来看,无论如何您都在使用自定义函数提交数据,因此解决此问题的最快方法是将提交输入更改为常规按钮。所以

<input type="submit" name="send" id="send" value="Send"/>

变成

<input type="button" name="send" id="send" value="Send"/>

我认为,当您在验证表单的函数中发现错误时返回 false 也可能会有所帮助。

一个附带的问题:我觉得很奇怪你选择了一个带有值的蜜罐字段(http://)。通常这些字段是空的。这样做有什么具体原因吗?

于 2013-06-15T06:29:04.170 回答
0

您需要将所有JS代码都保留function submitForm(formData)在里面$(document).ready(function(){});

如果我没记错的话,没有变量名称company,所以将此变量更改为passwordi,e. 在您的第二次if condition验证中。

注意:如果您的代码中存在一些错误,请不要逃避这些错误,而是尝试调试它。

于 2013-06-15T06:50:30.533 回答
0

当代码不工作时,JS 代码有问题

也许你可以从这个例子中尝试使用 JQuery http://bit.ly/1aAXy5U的 SignupForm

于 2014-01-06T15:45:45.590 回答