2013-05-29 30 views
0

我正在使用var函數來創建變量,以便我可以在PHP中使用它們所以我可以使用post函數,基本上我使用javascript導入它們。製作Java Script全局變量

無論如何,我如何讓他們全局變量?

我試着將它們包含在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); 
       } 
      }); 
     } 
    }); 

}); 
+0

使得JS全局容易...只是下降了var ....或specificly設置窗口對象'window.myVar =「你好」上;' – Orangepill

回答

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'); 
    }); 
}); 

你不想在這裏使用全局變量的原因是因爲你總是需要最新的輸入。如果你使用一個全局變量,那麼就沒有辦法知道你有最近的輸入,因爲事情會不同步。

0

每次您想要獲取輸入的當前值時,您需要在輸入上調用.val()。如果您在開始時只調用一次,那麼當用戶鍵入輸入時,變量不會保持最新。

做這樣的事情:

$(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); 
    }); 

}); 
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(); 
     } 
    }); 
}); 
+0

我需要他們成爲gloabl,因爲我也將使用變量來擴展其他功能。 以上所有方法都有幫助。 Thnaks;。) – Spudster

+0

我確實調用了javascript。 Java的。 我知道Java是一種完全不同的編程語言,只是一個錯誤的錯誤,現在已經被糾正。 – Spudster