Javascript 如何避免客户端验证中的冗余条件?

Javascript 如何避免客户端验证中的冗余条件?,javascript,json,Javascript,Json,我的代码使用了很多条件语句,变得很复杂。我正在寻找一种更有效的方法来验证输入 我的代码以JSON的形式接收服务器端验证的结果。对于许多输入中的每一个,如果输入的值无效,服务器将返回相应的false。条件语句适当地修改UI。以下是一个示例: else if((data.address===false)&&(data.city===false)&&(data.municipality===false)) { $('#adrserror').html('You

我的代码使用了很多条件语句,变得很复杂。我正在寻找一种更有效的方法来验证输入

我的代码以JSON的形式接收服务器端验证的结果。对于许多输入中的每一个,如果输入的值无效,服务器将返回相应的
false
。条件语句适当地修改UI。以下是一个示例:

else if((data.address===false)&&(data.city===false)&&(data.municipality===false))
{
    $('#adrserror').html('You have to put an address, city and municiplaity.'); 
    $('label.error').hide();
    $('.openpaddress').find('input').prop('readonly', false);
}
else if((data.address===false)&&(data.city===false))
{
    $('#adrserror').html('You have to fill the address and the city fields.'); 
    $('label.error').hide();  
    $('.openpaddress').find('#municipality').prop('readonly', true).css('border', '0px');   
}
else if((data.city===false)&&(data.municipality===false))
    ...
HTML只包含三个输入元素(地址、城市和直辖市)以及相应的标签。

类似于以下内容:

var missing = [];
var fields = ['address', 'city', 'municipality'];
for (var i = 0; i < fields.length; i++) {
    var f = fields[i];
    if (data[f] === false) {
        missing.push(f);
    }
}
if (missing.length > 0) {
    $('#adrserror').text('Please fill in fields: ' + missing.join(', '));
}
var缺失=[];
变量字段=[“地址”、“城市”、“市政当局”];
对于(变量i=0;i0){
$('#adrserror').text('请填写字段:'+缺少.join(','));
}

一个可爱的技巧是创建一个带有值的组合或值的导数的查询表。例如,var key=[data.address,data.city,data.university].join(“|”);。然后有一个方法对象,其键为“false | true | false”或“false | false | true”。您可以使用objMethods[key]()立即找到并触发正确的方法;没有“如果”和“或”,你的代码完全符合我的要求,谢谢你的帮助。此外,我不同意对我的问题投反对票。在发布之前,我确实试图找到解决问题的方法。我只是不知道循环是否足够好…我想在我的问题中添加一些东西。在此之前,我想强调的是,我非常努力地为我将要描述的问题找到解决方案。假设我们有第四个输入元素,这是可选的。这是URL。我将如何在上面的代码中集成该逻辑,而且显示的消息现在必须不同:“您没有输入正确的URL”。因此,我们可能会遇到这样的情况:用户也选择填充url字段。这必须以某种方式与上面的代码结合。如果它是可选的,上面的代码不需要对它做任何事情,它只是检查必填字段。如果您想检查它的有效语法,那么除了上面的代码之外,还要检查它。然后可以将错误消息附加到错误DIV的文本中。