我想使用jQuery或Javascript验证我的数据并将其发送到服务器,但是为什么不对它们进行验证?
$(document).ready(function() {
var name = $('#signup-name').val();
var email = $('#signup-email').val();
var password = $('#signup-password').val();
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}$/);
$('#signup-form').on('submit', function(e) {
e.preventDefault();
if (validate()) {
$.ajax({
type: 'post',
url: 'signup',
data: {
email: email,
password: password,
name: name
},
});
} else {
return false;
};
});
function validate() {
// name cheak here
if (name.length == "") {
$('.nameerror').html("Name field required !");
return false;
} else if (name.length = < 3) {
$('.nameerror').html("Name Should be greater than 3");
return false;
};
// email cheak here
if (email.length == "") {
$('.emailerror').html("Email field required !");
return false;
} else if (!email_regex.test(email)) {
$('.emailerror').html("Please enter correct email.");
return false;
};
// password cheak here
if (password.length == "") {
$('.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;
};
};
});
答案 0 :(得分:0)
我认为问题在于,尽管validate
函数确实可以访问变量name
等,但是这些变量仅在文档准备就绪时才设置一次,并且从未更新过。在调用submit
之前,应在validate
事件的事件处理程序中设置变量的值。
答案 1 :(得分:-2)
有两个主要问题,您只是没有将参数传递给validate函数。我已经使用传递给函数的参数更新了您的代码。
此外,对于任何函数,您都不会返回true,因此不会返回任何结果。另外,您的if语句也会分裂,并且会相互矛盾。
我已更正了这些问题,希望这可以解决!
{{1}}