javascript - 将变量从函数传递到 if 语句

标签 javascript jquery validation

我在表单上有一个提交按钮,我为其分配了一个函数来检查必填字段和可见字段。遇到空字段时,它应该向字段添加类,以及显示和错误消息。我有这个 jquery 脚本:

$(".submitBtn").click(function(validateAll) {
  if (validated = false) {
    alert("!!!");
    displayValidationErr();
  } else {
    $('#questionBody').submit();
  }
});

function validateAll() {
  var validated = true;
  $('.form-control').filter('[required]:visible').each(function() {
    if ($(this).val() === '') {
      $(this).addClass("emptyRequired");
      validated = false;
    }
  });
}

function displayValidationErr() {
  $("#validationError").fadeTo(2000, 600).slideUp(600, function() {
    $("#validationError").slideUp(600);
  });
}

单击按钮后,我无法从“validateAll”函数进一步传递变量。函数本身运行良好,但与 if\else 一起运行时就不行了。 我对这些东西很陌生,所以请对我放轻松。 :)

谢谢!

最佳答案

在您的 validateAll 函数中,您定义了 validated,它创建了一个仅限于该函数的函数范围。您可以创建一个全局变量或只提供一个返回值。

全局变量方法:

var validated = true; // in the same scope as your two functions

$( ".submitBtn" ).click(function(){
  validated = true;
  validateAll();

  if (validated == false){ // make sure double "=" is set
    alert("!!!");
    displayValidationErr();         
  } 
  else {
    $('#questionBody').submit();
  }
});

function validateAll() {
  // var validated = true;
  $('.form-control').filter('[required]:visible').each(function() {
    if ( $(this).val() === '' ) {
      $(this).addClass("emptyRequired");
      validated = false;
    }
  });
}

返回方式:

$( ".submitBtn" ).click(function(){
  validated = validateAll();

  if (validated == false){
    alert("!!!");
    displayValidationErr();         
  } 
  else {
    $('#questionBody').submit();
  }
});

function validateAll() {
  var validated = true;
  $('.form-control').filter('[required]:visible').each(function() {
    if ( $(this).val() === '' ) {
      $(this).addClass("emptyRequired");
      validated = false;
    }
  });

  return validated;
}

此外,还有一些更易于阅读的代码的小技巧:人们往往更喜欢正面优先的 if block ,所以不要像这样从双重否定 if 条件开始:

if (validated == false){
  alert("!!!");
  displayValidationErr();         
} 
else {
  $('#questionBody').submit();
}

最好的做法是从预期/想要的行为开始:

if (validated) {
  $('#questionBody').submit();
} 
else {
  alert("!!!");
  displayValidationErr();         
}

关于javascript - 将变量从函数传递到 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53261642/

相关文章:

javascript - React useState 钩子(Hook)不触发子组件的重新渲染

ios - 用至少一个点验证密码

javascript - 是否可以为我站点上的所有 jQuery 验证使用站点范围的默认设置?

javascript - 如何在 pageInfo 中将总计数传递给客户端

javascript - onmouseover 不起作用

javascript - 带有动态 Url 的 jQuery $.Deferred()

javascript - tinymce:富文本模式,它是如何工作的

jquery - Bootstrap 在 768 上显示桌面导航栏菜单

asp.net - 在页面首次加载时显示组的验证消息

javascript - 为什么我的ElasticSearch查询返回零文档?