确认页面:如果设置了GET变量,则提交,否则允许用户输入代码

时间:2012-12-28 18:48:11

标签: jquery get

我有一个简单的html表单供用户确认。用户注册后,会向其发送一个指向此页面的链接,其中附加GET变量,如下所示:http://mysite/confirm?code=xyz123

我正在使用jquery验证插件进行所有表单验证。

我有这个验证码:

<script type="text/javascript" language="javascript">
    $(document).ready(function(){
        $('#confirm').validate(
        {rules: {
            code: {
                required: true,
                minlength: 32,
                maxlength: 32
            }
        },

        messages: {
            code: {
                required: "Please enter the confirmation code",
                minlength: "Confirmation code is {0} characters",
                maxlength: "Confirmation code is {0} characters"
            }
        },
        submitHandler: function(form){
            $.get("confirmnewuser.php",
                $('#code').val,
                function(data){
                    if(data.status == 0){
                        $('#message').append("<span class='error'>Error: " + data.message + "</span>");
                    }
                    else{
                        $('.container').hide();
                        $('.short_explanation').hide();
                        $('#message').append("<span>" + data.message + "</span>");
                    }
                },
            "json");
        }
        });
    });
</script>

我想测试GET['code']变量是否已设置,这可以像这样轻松完成:

var $_GET = <?php echo json_encode($_GET); ?>;

但是在这一点上我不知道哪里将它添加到我现有的验证代码中,我不知道如何调用表单提交处理程序(我对jquery /我相当新)的JavaScript)。

或者,如果未设置GET变量,则页面应正常加载,然后用户可以在输入框中输入其代码。

编辑:添加了表单代码

    <form id='confirm' method='get' accept-charset='UTF-8'>

<div class='short_explanation'>* required fields</div>

<div id='message'></div>
<div class='container'>
    <label for='code' >Confirmation Code:* </label><br/>
    <input type='text' name='code' id='code' maxlength="32" /><br/>
</div>
<div class='container'>
    <input type='submit' name='submit' id="submit" value='Confirm' />
</div>
</form>

2 个答案:

答案 0 :(得分:0)

尝试使用此代码。我还没试过呢

submitHandler: function(form){
            if($('#code').val() == null || $('#code').val() == '')
                 return false;
            $.get("confirmnewuser.php",
                $('#code').val,
                function(data){
                    if(data.status == 0){
                        $('#message').append("<span class='error'>Error: " + data.message + "</span>");
                    }
                    else{
                        $('.container').hide();
                        $('.short_explanation').hide();
                        $('#message').append("<span>" + data.message + "</span>");
                    }
                },
            "json");
        }

你必须单独调用提交,提交按钮应该自动执行。

无论如何,您可以使用代码

来调用提交
$('#confirm').submit();

答案 1 :(得分:0)

据我所知,情况是,

如果用户附带此url-&gt; http://mysite/confirm

页面将正常加载,用户将输入自己的代码,然后单击提交按钮。

但如果用户附带此url-&gt; http://mysite/confirm?code=xyz123

表单将加载defualt代码“xyz12”,并自动提交。

如果这是正确的,这是我的解决方案,

$(document).ready(function(){
   var defaultCode = <?php echo json_encode($_GET); ?>;
    if (defaultCode != "") {
       $('#code').val(defaultCode); //set code
       $('#confirm').submit(); //submit form, so submitHandler will handle it
    }
});​