Javascript 如何在jQuery中验证表单?
我想用jQuery或Javascript验证我的数据并将它们发送到服务器,但为什么不验证它们Javascript 如何在jQuery中验证表单?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想用jQuery或Javascript验证我的数据并将它们发送到服务器,但为什么不验证它们 $(文档).ready(函数(){ var name=$('#注册名').val(); var email=$(“#注册电子邮件”).val(); var password=$('#注册密码').val(); var email_regex=新的RegExp(/^[a-zA-Z0-9.\u-]+@[a-zA-Z0-9.-]+\[a-zA-Z]{2,4}$/i); var pass_regex=new
$(文档).ready(函数(){
var name=$('#注册名').val();
var email=$(“#注册电子邮件”).val();
var password=$('#注册密码').val();
var email_regex=新的RegExp(/^[a-zA-Z0-9.\u-]+@[a-zA-Z0-9.-]+\[a-zA-Z]{2,4}$/i);
var pass_regex=new RegExp(/^(?=[0-9])(?=[!@$%^&])[a-zA-Z0-9!@$%^&]{7,15}$/);
$(“#注册表格”)。在('submit',函数(e){
e、 预防默认值();
if(validate()){
$.ajax({
键入:“post”,
url:'注册',
数据:{
电邮:电邮,,
密码:密码,
姓名:姓名
},
});
}否则{
返回false;
};
});
函数验证(){
//我叫切克
如果(name.length==“”){
$('.nameerror').html(“需要名称字段!”);
返回false;
}else if(name.length=<3){
$('.nameerror').html(“名称应大于3”);
返回false;
};
//在这里给cheak发电子邮件
如果(email.length==“”){
$('.emailerror').html(“需要电子邮件字段!”);
返回false;
}否则,如果(!email_regex.test(email)){
$('.emailerror').html(“请输入正确的电子邮件”);
返回false;
};
//密码在这里
如果(password.length==“”){
$('.passeror').html(“需要密码字段!”);
返回false;
}如果(!通过正则表达式测试(密码)){#
('.passeror').html(“至少八个字符,至少一个字母和一个数字:”);
返回false;
};
};
});代码>有两个主要问题,您只是没有将参数传递给validate函数。我已经用传递给函数的参数更新了代码
此外,您从未为任何函数返回true,因此不会返回任何内容。此外,您的if语句被拆分,并且将相互矛盾
我已经纠正了这些问题,希望这能起作用
$(document).ready(function() {
$('#signup-form').on('submit', function(e) {
var name = $('#signup-name').val();
var email = $('#signup-email').val();
var password = $('#signup-password').val();
e.preventDefault();
if (validate(name, email, password)) {
$.ajax({
type: 'post',
url: 'signup',
data: {
email: email,
password: password,
name: name
},
});
} else {
return false;
};
});
});
function validate(name, email, password) {
var email_regex = new RegExp(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i);
var pass_regex = new RegExp(/^(?=.[0-9])(?=.[!@#$%^&])[a-zA-Z0-9!@#$%^&]{7,15}$/);
// name cheak here
if (name.length == 0) {
$('.nameerror').html("Name field required !");
return false;
} else if (name.length <= 3) {
$('.nameerror').html("Name Should be greater than 3");
return false;
} else if (email.length == 0) { //Check Email
$('.emailerror').html("Email field required !");
return false;
} else if (!email_regex.test(email)) {
$('.emailerror').html("Please enter correct email.");
return false;
} else if (password.length == 0) { // password cheak here
$('.passerror').html("password field required !");
return false;
} else if (!pass_regex.test(password)) {
('.passerror').html("Minimum eight characters, at least one letter and one number:");
return false;
} else {
return true;
}
};
$(文档).ready(函数(){
$(“#注册表格”)。在('submit',函数(e){
var name=$('#注册名').val();
var email=$(“#注册电子邮件”).val();
var password=$('#注册密码').val();
e、 预防默认值();
如果(验证(姓名、电子邮件、密码)){
$.ajax({
键入:“post”,
url:'注册',
数据:{
电邮:电邮,,
密码:密码,
姓名:姓名
},
});
}否则{
返回false;
};
});
});
功能验证(名称、电子邮件、密码){
var email_regex=新的RegExp(/^[a-zA-Z0-9.\u-]+@[a-zA-Z0-9.-]+\[a-zA-Z]{2,4}$/i);
var pass_regex=new RegExp(/^(?=[0-9])(?=[!@$%^&])[a-zA-Z0-9!@$%^&]{7,15}$/);
//我叫切克
如果(name.length==0){
$('.nameerror').html(“需要名称字段!”);
返回false;
}否则如果(name.length我认为问题在于,尽管validate
函数确实可以访问变量name
等,但这些变量在文档第一次准备好时只设置一次,从未更新过。变量的值应在submit
事件的事件处理程序中设置,然后再vali调用date
。控制台中有错误消息吗?我得到一个语法错误,因为if(name.length=<3)
,当然应该是if(name.length函数可以访问这些变量,因为它们在其全局范围内。请举例检查。@Cid这些变量不在全局范围内,它们在JQuery onload函数内。这仍然在函数的全局范围内。请检查此项。我认为称之为“全局范围”是不正确的-但是是的,变量可以通过验证
访问。问题不在于作用域,而在于变量在页面第一次加载时保存的值(可能是空的),而不是在提交之前输入表单的值。即使在$(document).ready(function(){}之外声明
当函数在其中时。它仍然可用。