javascript - 在 jQuery 中重复代码

标签 javascript jquery

我是 JS 和 jQuery 的新手,我不喜欢一遍又一遍地重写代码或函数。这是我的代码:

var validarN= function(){
    $("#username").blur(function(){
        var valor= $(this).val();
        var regex= /^[\w]{4,12}$/;
        if (valor.match(regex)) {
            $(this).closest(".form-group").removeClass("has-error");;
            $(this).closest(".form-group").addClass("has-success"); 
        } else {
            $(this).closest(".form-group").addClass("has-error");
        };


    });
};

var validarPw = function(){
    $("#pass").blur(function(){
        var varlor, regex
        valor= $(this).val()
        regex= /(?=\S*?[A-Z])(?=\S*?[a-z])(?=\S*?[0-9])\S{6,}$/;
        if (valor.match(regex)) {
            $(this).closest(".form-group").removeClass("has-error");
            $(this).closest(".form-group").addClass("has-success");
        } else {
            $(this).closest(".form-group").addClass("has-error");
        };
    });
};
var confirmarPw= function() {
    $("#passV").blur(function() {
        var valor= $(this).val();
        var valorP= $("#pass").val();
        regex= /(?=\S*?[A-Z])(?=\S*?[a-z])(?=\S*?[0-9])\S{6,}$/;
        if (valor.match(regex) && valor==valorP) {
            $(this).closest(".form-group").removeClass("has-error");
            $(this).closest(".form-group").addClass("has-success");
        } else {
            $(this).closest(".form-group").addClass("has-error");
        };
    });
}

我正在进行表单验证。如果可能的话,我也想要一个封装 jQuery 函数和模糊事件的表单。

最佳答案

我可以支持 ikryvorotenko 的说法,但如果你想继续你自己的功能,你可以这样做

var validate = function(sel,regex){
    $(sel).blur(function(){
        var varlor $(this).val()
        if (valor.match(regex)) {
            $(this).closest(".form-group").removeClass("has-error");
            $(this).closest(".form-group").addClass("has-success");
        } else {
            $(this).closest(".form-group").addClass("has-error");
        };
    });
};

然后

var validarN=function(){validate("#username",/^[\w]{4,12}$/);},
    validarPw=function(){validate("#pass",/(?=\S*?[A-Z])(?=\S*?[a-z])(?=\S*?[0-9])\S{6,}$/);},
    confirmarPw=function(){validate("#passV",/(?=\S*?[A-Z])(?=\S*?[a-z])(?=\S*?[0-9])\S{6,}$/);};

关于javascript - 在 jQuery 中重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36106033/

相关文章:

jquery - 在 Aurelia 中使用 Jquery 和 Typescript

jquery - 不确定为什么这需要点击两次才能工作

javascript - 在 div 内滚动完整图像

Javascript 变量不通过 ajax 更新

ajax - 浏览器根据 Ajax 请求进入 "busy"状态

javascript - 经过一段时间后,可观察运算符将其变为 "do"

javascript - AngularJS:如何在配置阶段使用 $q 进行单元测试?

jquery - 设置来自 Flask 的 iframe src 响应

javascript - 使用 CSS 去除模糊图像外部的白雾

javascript - JS - 使用正则表达式获取字符串替换的原始值