函数调用3次后如何返回真值

时间:2018-04-18 06:43:38

标签: jquery html function

//这是隐藏所有错误报告的隐藏功能

function hide_errors(){
    $(".error_orient").hide();
    $(".error_short").hide();
    $(".error_master").hide();
  }

//错误检查功能

  function error_check(data,_class){
    if(data.val()=="" || data.val()==0){
      data.parent().parent().addClass('has-error');
      $(_class).show();
      return true;
    }
    else
      data.parent().parent().removeClass('has-error');
      $(_class).hide();
      return false;
  }

//在检查空/重复

后记录添加新记录
  $("#btnSave").click(function(){
    event.preventDefault();
    _error_check = false;

    var orientation_name = $('#orientation_name');
    var short_code = $('#short_code');
    var master_select = $('#ori_master');
    hide_errors();

    _error_check = error_check(orientation_name,'.error_orient');
    _error_check = error_check(short_code,'.error_short');
    _error_check = error_check(master_select,'.error_master');

    //Add New Record
    if(_error_check==false){
      $.ajax({
----
----
      }); 
    //end Ajax
    }
  })
  //End function

当第3个函数同时返回true值时运行ajax .. 但是我在运行ajax时需要所有函数都是真的.. 如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

改变这三行:

_error_check = error_check(orientation_name,'.error_orient');
_error_check = _error_check && error_check(short_code,'.error_short');
_error_check = _error_check && error_check(master_select,'.error_master');

并将if表达式更改为

if(_error_check){

&&false值一起使用,返回false。因此,只有当所有这些都返回true时,您的AJAX才会起作用。

答案 1 :(得分:1)

您可以使用&=将值组合在一起:

_error_check = true;
_error_check &= !error_check(orientation_name,'.error_orient');
_error_check &= !error_check(short_code,'.error_short');
_error_check &= !error_check(master_select,'.error_master');

if (_error_check == true) 

使用&&或者& =表示'这些必须全部通过',因此'error_check'的结果必须为true == pass。因为它不是(它是真的==失败),你需要反转结果,或改变结果,以便它。

更改名称可以使其更清晰,例如

function haserror(data, cls) {
    // return true if it has an error

function passescheck(data, cls) {
    // return true if it passes

您可以使用其中之一。以上使用&=来说“所有3个都已通过”,但你可以同样说

“任何1失败”

var has_failed = false;
has_failed |= haserror(orientation_name,'.error_orient');
has_failed |= haserror(short_code,'.error_short');
has_failed |= haserror(master_select,'.error_master');

if (has_failed == false)  // then has passed

或“所有3人都过去了”

var has_passed = true;
has_passed &= passescheck(orientation_name,'.error_orient');
has_passed &= passescheck(short_code,'.error_short');
has_passed &= passescheck(master_select,'.error_master');

if (has_passed == true)  // then has passed