我正在尝试使用 jquery、ajax 和 php 验证 html 表单。我在 jquery 中编写了这个函数,使用 ajax post 请求检查用户名的可用性。但是,问题是它总是返回 false。我是 jquery 和 javascript 的新手。我已经尝试了很多,但我无法找出问题所在。请帮忙。
function isvalid_username()
{
var username=$('#username').val();
var option=false;
if(username == "")
{
$('#username').removeClass('valid').addClass('invalid');
$('#username_feedback').addClass('error').html("Please choose a username!!");
option=false;
}
else if(username.length < 4)
{
$('#username').removeClass('valid').addClass('invalid');
$('#username_feedback').addClass('error').html("Your username must be atleast 4 characters.");
option=false;
}
else
{
$.post('php/check_username_avail.php',{ username : username },function(data){
if(data == "false")
{
$('#username').removeClass('valid').addClass('invalid');
$('#username_feedback').addClass('error').html("Sorry! That username is already taken. Try a different one.");
option= false;
}
else if(data == "true")
{
$('#username').removeClass('invalid').addClass('valid');
$('#username_feedback').html("");
alert('Now it should return true');
option=true;
}
else
{
$('#username').removeClass('valid').addClass('invalid');
$('#username_feedback').addClass('error').html(data);
option=false;
}
}).error(function(){
alert("An error occurred. Unable to validate username");
});
}
return option;
}
编辑:我已阅读 other post 。但我仍然没有找到验证表单的方法。我想在我的代码中使用此提交处理程序函数:
$('#signup_form').submit(function(event)
{
if(isvalid_first_name() && isvalid_username() && isvalid_email() && isvalid_password())
{
alert('Submitting the form');
}
else
{
event.preventDefault();
$('#submit_feedback').html("Please correct the above problems first");
}
});
如果不能以这种方式完成,那么我应该使用什么其他技术来验证客户端的表单?
最佳答案
因为你没有等待 AJAX 完成并立即返回选项,这已经是错误的。尝试下面的代码。
function isvalid_username(){
var username=$('#username').val();
var option=false;
if(username == "")
{
$('#username').removeClass('valid').addClass('invalid');
$('#username_feedback').addClass('error').html("Please choose a username!!");
return option;
}
else if(username.length < 4)
{
$('#username').removeClass('valid').addClass('invalid');
$('#username_feedback').addClass('error').html("Your username must be atleast 4 characters.");
return option;
}
else
{
$.post('php/check_username_avail.php',{ username : username },function(data){
if(data == "false")
{
$('#username').removeClass('valid').addClass('invalid');
$('#username_feedback').addClass('error').html("Sorry! That username is already taken. Try a different one.");
return option;
}
else if(data == "true")
{
$('#username').removeClass('invalid').addClass('valid');
$('#username_feedback').html("");
alert('Now it should return true');
option=true;
return option;
}
else
{
$('#username').removeClass('valid').addClass('invalid');
$('#username_feedback').addClass('error').html(data);
return option;
}
}).error(function(){
alert("An error occurred. Unable to validate username");
});
}
}
关于javascript 函数总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30834004/