我写了一些验证,它工作得很好,但我似乎无法组合所有三个函数(当调用所有函数并尝试编写 if 语句时,或者可能我只是误解了某些东西),这将对 $('按钮:提交').attr("已禁用", true);当所有三个字段都验证时,该按钮将被启用,当其中一个字段未验证时,它将禁用按钮。
这是我的代码:
$(document).ready(function(){
var form = $("#contact-us");
var name = $("#name");
var nameInfo = $("#nameInfo");
var email = $("#email");
var emailInfo = $("#emailInfo");
var message = $("#message");
var messageInfo = $("#messageInfo");
name.blur(validateName);
email.blur(validateEmail);
message.blur(validateMessage);
name.keyup(validateName);
email.keyup(validateEmail);
message.keyup(validateMessage);
function validateEmail(){
var a = $("#email").val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
if(filter.test(a)){
emailInfo.removeClass("error2");
emailInfo.text("");
return true;
}
else{
emailInfo.addClass("error2");
emailInfo.text("Wrong email");
return false;
}
}
function validateName(){
if(name.val().length < 3) {
nameInfo.addClass("error");
nameInfo.text("Wrote more than 3 characters");
return false;
}
else {
nameInfo.removeClass("error");
nameInfo.text("");
return true;
}
}
function validateMessage(){
if(message.val().length < 10) {
messageInfo.addClass("error3");
messageInfo.text("Wrote more than 15 characters");
return false;
}
else {
messageInfo.removeClass("error3");
messageInfo.text("");
return true;
}
}
});
最佳答案
你可以做的是:
$("input").keyup(function () {
var emailOk = validateEmail();
var nameOk = validateName();
var messageOk = validateMessage();
if (emailOk && nameOk && messageOk) $("button.submit").addClass("show");
});
然后删除您的 blur
和 keyup
监听器。
关于javascript - 组合功能+禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21057575/