缩短Jquery条件

2 javascript validation optimization jquery

我有一个关于如何缩短Jquery if语句的问题.在我的表格中,我有几个字段,我检查它们是否填满.我知道有几个插件可以帮我,但我不想自己学习(在别人的帮助下;-))

我收到了这张支票

//---- First define hasError
var hasError = false;
//---- Get the value from the inputfield
var firstname = $('#firstname').val();
//---- Do the check
if(firstname == ''){
 $("#error_firstname").show();
 hasError = true;
}else{
 $("#error_firstname").hide();
}
Run Code Online (Sandbox Code Playgroud)

我以为我可以像这样写:

(firstname == '') ? $(".firstname").show(): $(".firstname").hide();
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我不能把hasError = true放在其中,所以我最后不能问这个

if(hasError != false) {
 //---- if error, don't refresh page and show errors
 return false;
}else{
 //---- Save values to DB and show succes message
}
Run Code Online (Sandbox Code Playgroud)

有人有个主意吗?

Tnx提前

Grtzz

维姆

Bal*_*usC 8

首先,将其重构为一个函数,以便您可以将其重用于所有字段.

例:

function check(fieldname) {
    var value = $('#' + fieldname).val();
    var error = $('#error_' + fieldname);
    if (value == '') {
        error.show();
        $.hasError = true;
    } else {
        error.hide();
    }
}
Run Code Online (Sandbox Code Playgroud)

这样你就可以按如下方式使用它:

check('firstname');
check('lastname');
// etc..
Run Code Online (Sandbox Code Playgroud)

当然,您可以通过将所有名称存储在数组中或仅通过获取$(':input')和调用check()循环来进一步重构它.你一直忙于重构;)你最终可以看看现有的表单验证插件是如何做到的.例如jQuery Validator.

整点是:不要重复代码.重构它.