Javascript新手 - 处理DRY问题

MEM*_*MEM 0 javascript jquery

如果可能的话,任何人都可以请指出如何缩短此代码的方向吗?

if($(".row-member0").is(":visible")){
    if($("#TeamMember_0_name").val()==="") i=false;
    if($("#TeamMember_0_email").val()==="") i=false;
    if($("#TeamMember_0_phone").val()==="")i=false;
    if($("#TeamMember_0_birthdate").val()==="") i=false;
    if( !validateEmail($("#TeamMember_0_email").val())) { 
        i=false;
    }    
}

if($(".row-member1").is(":visible")) {
    if($("#TeamMember_1_name").val()==="") i=false;
    if($("#TeamMember_1_email").val()==="") i=false;
    if($("#TeamMember_1_phone").val()==="") i=false;
    if($("#TeamMember_1_birthdate").val()==="") i=false;
    if( !validateEmail($("#TeamMember_1_email").val())) { 
            i=false;
    }
}

if($(".row-member2").is(":visible")) {
    if($("#TeamMember_2_name").val()==="") i=false;
    if($("#TeamMember_2_email").val()==="") i=false;
    if($("#TeamMember_2_phone").val()==="") i=false;
    if($("#TeamMember_2_birthdate").val()==="") i=false;
    if( !validateEmail($("#TeamMember_2_email").val())) { 
        i=false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道也许应该使用互动.只是不确定如何.

我虽然说:

1)在顶部元素上放置一个.row-member类,然后:

$('.row-member input').each(
    function(index, value) {
        if($(this).val()==="") i=false; 
    }
);
Run Code Online (Sandbox Code Playgroud)

我可以帮忙吗?

Eli*_*Eli 5

您可以使用StartsWith选择器和each()迭代您的类:

$("[class^='row-member']").each(function(index) {
    if($("#TeamMember_" + index + "_name").val()==="" || $("#TeamMember_" + index + "_email").val()==="" || $("#TeamMember_" + index + "_phone").val()==="" || $("#TeamMember_" + index + "_birthdate").val()==="" ||  !validateEmail($("#TeamMember_" + index + "_email").val())) { 
        i=false;
    } 
});
Run Code Online (Sandbox Code Playgroud)