我有这个js代码
$(document).ready(function(){
$("#frm_registration").submit(function(event){
var submit = false;
termsIsChecked = $("#user_terms_of_service").is(":checked");
uEmail = $("#user_email").val();
uPassword = $("#user_password").val();
uConfirmPassword = $("#user_password_confirmation").val();
uFirstName = $("#user_firstname").val();
uLastName = $("#user_firstname").val();
uContactNumber = $("#user_firstname").val();
uOtherInformation = $("#user_firstname").val();
// if(uPassword.length === 0){
// uPassword.after("<p>Password can't be blank</p>");
// submit = false;
// }
if(submit === false){
event.preventDefault();
}
});
});
如果我取消注释if块,如果我将event.preventDefault();
更改为return false;
,则表单将提交事件,如果取消注释if块,它仍然无法正常工作。我的问题是为什么jquery像这样反应,如果我添加if语句 preventDefault 和返回false; 不会工作但是如果我删除if语句或注释掉 preventDefault并返回false;会工作。有人解释为什么会像这样
答案 0 :(得分:2)
问题是uPassword不是jQuery对象,它是一个字符串,因此没有为String对象调用after
的方法。哪个应该会在浏览器控制台中显示Uncaught TypeError: uPassword.after is not a function
之类的错误。
$("#user_password").after("<p>Password can't be blank</p>");
此外,您必须使用值
初始化submit
$(document).ready(function () {
$("#frm_registration").submit(function (event) {
var submit = true;
termsIsChecked = $("#user_terms_of_service").is(":checked");
uEmail = $("#user_email").val();
uPassword = $("#user_password").val();
uConfirmPassword = $("#user_password_confirmation").val();
uFirstName = $("#user_firstname").val();
uLastName = $("#user_firstname").val();
uContactNumber = $("#user_firstname").val();
uOtherInformation = $("#user_firstname").val();
if (uPassword.length === 0) {
$("#user_password").after("<p>Password can't be blank</p>");
submit = false;
}
if (submit === false) {
event.preventDefault();
}
});
});
演示:Fiddle