javascript - 组合功能+禁用

标签 javascript jquery function validation button

我写了一些验证,它工作得很好,但我似乎无法组合所有三个函数(当调用所有函数并尝试编写 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");
});

然后删除您的 blurkeyup 监听器。

Here's a working fiddle .

关于javascript - 组合功能+禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21057575/

相关文章:

javascript - jQuery 无法访问追加元素

javascript - 如何在 Google map 中的方向变化之间实现平滑过渡?

javascript - Google 地点自动完成语言

javascript - 动态选择单选按钮

javascript - 从backbone.js集合获取model.id使用Tastypie创建成功调用?

javascript - TypeScript 中函数类型的参数数量错误

php - jQuery 或 php 在单个节点内查找多个 html 字符串并用 span 括起来

javascript - 离开页面前要求保存吗?

函数返回未分配给变量

Python从函数返回列表