0

ユーザー確認用の簡単な 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>
4

2 に答える 2

0

私が理解している状況としては、

ユーザーがこのURLを持っている場合->http://mysite/confirm

ページは通常どおり読み込まれ、ユーザーは独自のコードを入力して送信ボタンをクリックします。

しかし、ユーザーがこのURLを持っている場合->http://mysite/confirm?code=xyz123

フォームはデフォルトのコード「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
    }
});​
于 2012-12-28T20:59:56.907 に答える
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();
于 2012-12-28T20:57:23.537 に答える