我使用var函数创建变量,以便我可以在PHP中使用它所以我可以使用post函数,基本上我在javascript中导入它们。
无论如何我如何使它们成为全局变量?
我尝试将它们包含在document.ready函数中,甚至在代码开始执行document.ready函数之前。它更整洁,然后只是重复那些var。
这是代码
$(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 :(得分: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');
});
});
你不想在这里使用全局变量的原因是因为你总是需要最新的输入。如果您使用全局变量,则无法判断您是否拥有最新的输入,因为事情将会不同步。
答案 1 :(得分: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);
});
});
答案 2 :(得分: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();
}
});
});