Javascript验证许多字段
我试图通过javascript/jQuery进行几次验证。我需要知道我能用什么样的逻辑 我有大约15个字段要验证。我在想是否可以用返回值true或false来验证每个字段。然后我会检查返回的值是否为false。如果是,则不验证表单。这有意义吗 或者,对于一个字段又一个字段,我必须经历一组if-else嵌套条件吗 PS:我不想使用jQueryValidate插件,因为在我的表单中没有太多复杂的东西 让我知道你认为我应该怎么做Javascript验证许多字段,javascript,jquery,Javascript,Jquery,我试图通过javascript/jQuery进行几次验证。我需要知道我能用什么样的逻辑 我有大约15个字段要验证。我在想是否可以用返回值true或false来验证每个字段。然后我会检查返回的值是否为false。如果是,则不验证表单。这有意义吗 或者,对于一个字段又一个字段,我必须经历一组if-else嵌套条件吗 PS:我不想使用jQueryValidate插件,因为在我的表单中没有太多复杂的东西 让我知道你认为我应该怎么做 谢谢。是的,这是一种方法,但显然您必须将结果包含在某种数据结构中。您可以
谢谢。是的,这是一种方法,但显然您必须将结果包含在某种数据结构中。您可以有一个对象,它是key->value,其中key是您要验证的字段的id,然后根据您的验证,该值是true还是false。然后只需迭代对象并检查假值 然后我会添加一个css类
$('.required').each(function (i) {
});
可以使用类似于错误哈希的对象
$('#target').submit(function (e) {
var errors = {};
//No field should be blank
$('.required').each(function () {
if (!$.trim($(this).val())) errors[$(this).prev('label').text()] = 'is blank';
});
//Don't submit form on errors
//Show errors
if (!jQuery.isEmptyObject(errors)) {
$('.error').show().html("<p>Form couldn't be submitted because:</p>");
$('.error').append(
$.map(errors, function (type, error) {
return $('<p>', {
text: error + ' ' + type
}).get();
}));
// Prevent the form from being submitted
return false;
}
$('.error').hide();
});
$(“#目标”).submit(函数(e){
var错误={};
//任何字段都不应为空
$('.required')。每个(函数(){
如果(!$.trim($(this.val())错误[$(this.prev('label')).text()]='为空';
});
//不要在出现错误时提交表单
//显示错误
如果(!jQuery.isEmptyObject(错误)){
$('.error').show().html(表单无法提交,因为:);
$('.error')。追加(
$.map(错误,函数(类型,错误){
返回$(“”{
文本:错误+“”+类型
}).get();
}));
//阻止提交表单
返回false;
}
$('.error').hide();
});
这是一个无耻的插头,但是你试过了吗?我正在积极开发它,我知道至少还有一个人在使用它(耶!)。这可能会解决你的一些复杂问题。另外,如果你能用你的复杂问题更新你的问题,我可以告诉你如何在regula中做到这一点。它将使您不必编写自己的验证 regula还以约束冲突数组的形式返回其验证结果,因此您可以看到哪个元素未通过验证(以及其他内容)
如果您感兴趣,可以提供有关regula功能的更多信息。我们可以获取您的表单示例吗?您可以选择任何表单示例。我需要知道如何验证几个字段的逻辑。如果不是,我使用嵌套的吗?或者分别验证每个字段?我想我可能需要分别验证每个字段,因为如果表单无法验证,那么我需要告诉具体的错误消息。我想您刚刚回答了自己的问题;)如果有错误,只需将该值作为错误消息,如果通过,只需将该值设置为true。在本例中,您可以只执行if(value!=true){your code…}$.each(validationElements,function(key,value){{if(value!=true){your code…});