如何缩短功能检查多个布尔值

时间:2018-01-22 22:49:46

标签: javascript jquery

我在我的代码中遇到了这个挑战,我想改变这个:

   function validateLoanAmount(){

      var loan_amount = $('[name=loan_amount]');

      if(loan_amount.val() == ''){
        showError(loan_amount, 'Field can\'t be empty');
        return false;
      }

      if(loan_amount.val() <= 0){
        showError(loan_amount, 'Value can\'t equal 0 or less');
        return false;
      }
    }

进入这个:

function validateLoanTerm(){

  var loan_term = $('[name=loan_term]');

  isEmpty(loan_term);
  isEqualZeroOrLess(loan_term);
}

function isEmpty(element){
  if(element.val() == ''){
    showError(element, 'Field can\'t be empty');
    return false;
  }
}

function isEqualZeroOrLess(element){
  if(element.val() <= 0){
    showError(element, 'Value can\'t equal 0 or less');
    return false;
  }
}

我尝试将return放在isEmpty()isEqualToZeroOrLess()之前,但只有第一个功能已解决。它看起来像一个简单的函数来缩短(因为我有许多类似的输入来验证,我想保持干燥),但看起来它比我最初的想法更复杂。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

将来电与&&

结合起来
function validateLoanTerm(){
    var loan_term = $('[name=loan_term]');
    return isEmpty(loan_term) && isEqualZeroOrLess(loan_term);
}

但为了实现这一点,当没有错误时,函数需要返回true

function isEmpty(element){
  if(element.val() == ''){
    showError(element, 'Field can\'t be empty');
    return false;
  }
  return true;
}

function isEqualZeroOrLess(element){
  if(element.val() <= 0){
    showError(element, 'Value can\'t equal 0 or less');
    return false;
  }
  return true;
}