0

私は var 関数を使用して変数を作成し、PHP で使用できるようにしています。したがって、post 関数を使用できます。基本的には、javascript でインポートしました。

とにかく、それらをグローバル変数にするにはどうすればよいですか?

document.ready 関数に、またはコードが document.ready 関数の実行を開始する前に、それらを含めようとしました。それらの変数をどこでも繰り返すだけで、はるかにきれいになります。

ここにコードがあります

$(document).ready(function () {
    var user_login = $('#user_login').val();
    var user_pass = $('#pass_login').val();
    $('#field').keyup(function (e) {

        if (e.keyCode == 13) {

            //If enter is pressed vailidate the form
            e.preventDefault();
            $.ajax({

                url: 'ajax/check.php',
                type: 'post',
                data: {
                    user_login: user_login,
                    pass_login: user_pass
                },
                success: function (data) {
                    $('#content').html(data);
                }
            });
        };
    });

    $('#submit').click(function (e) {
        if (e.keyCode != 13) {


            $.ajax({

                url: 'ajax/check.php',
                type: 'post',
                data: {
                    user_login: user_login,
                    pass_login: user_pass
                },
                success: function (data) {
                    $('#content').html(data);
                }
            });
        }
    });

});
4

3 に答える 3

0

.val()入力の現在の値を取得するたびに、入力を呼び出す必要があります。最初に 1 回だけ呼び出すと、ユーザーが入力を入力しても、変数は最新の状態に保たれません。

次のようにします。

$(document).ready(function() {
    // Make a function that returns the data, then call it whenever you
    // need the current values
    function getData() {
        return {
            user_login: $('#user_login').val(),
            user_pass: $('#pass_login').val()
        }
    }

    function check(e) {
        e.preventDefault();
        $.ajax({

            url: 'ajax/check.php',
            type: 'post',
            data: getData(), // get current values
            success: function (data) {
                $('#content').html(data);
            }
        });
    }

    // Don't repeat so much; use the same function for both handlers
    $('#field').keyup(function(e) {
        if (e.keyCode == 13) check(e);
    });

    $('#submit').click(function(e) {
        if (e.keyCode != 13) check(e);
    });

});
于 2013-05-29T03:40:44.040 に答える
0

グローバルはおそらくここに行く方法ではありません。重複コードを減らすことにもっと関心があるようですね。現在のコードを次のようにリファクタリングできます。

$(document).ready(function () {
    function submitForm() {
        var user_login = $('#user_login').val();
        var user_pass = $('#pass_login').val();

        $.ajax({
            url: 'ajax/check.php',
            type: 'post',
            data: {
                user_login: user_login,
                pass_login: user_pass
            },
            success: function (data) {
                $('#content').html(data);
            }
        });
    }

    $('#field').keyup(function (e) {
        if (e.keyCode == 13) {
            //If enter is pressed vailidate the form
            e.preventDefault();
            submitForm();
        };
    });

    $('#submit').click(function (e) {
        if (e.keyCode != 13) {
            submitForm();
        }
    });
});
于 2013-05-29T03:41:13.937 に答える
0

理由がないので、おそらくそれらをグローバルにしたくないでしょう。これをコード化したので、変数はドキュメントの準備が整うとすぐに一度だけ評価されます。これは、ユーザーがフォーム フィールドに何かを入力する前です。onkeyup ハンドラーまたはフォームの送信時にそれらを評価して、現在の値を取得します。あなたがそうするかどうかはわかりませんが、check.php次のようになります。

$(function(){
   $('form#theform').submit(function(e){
      e.preventDefault();
      var  user_login = $('#user_login').val(),
           user_pass = $('#pass_login').val();
      // you ajax submit here

   });

   $('#field').keyup(function(e){
       e.preventDefault();
       var  user_login = $('#user_login').val(),
            user_pass = $('#pass_login').val();
       // do your validation, if successful then do: $('theform').trigger('submit');
   });
});

ここでグローバルを使用したくない理由は、常に最新の入力が必要だからです。グローバル変数を使用すると、最新の入力があることを伝える方法がありません。同期が取れなくなるためです。

于 2013-05-29T03:31:53.720 に答える