使用jQuery检查值是不是为空[重复]

Posted

技术标签:

【中文标题】使用jQuery检查值是不是为空[重复]【英文标题】:Check if values are empty or not with jQuery [duplicate]使用jQuery检查值是否为空[重复] 【发布时间】:2014-09-09 17:05:07 【问题描述】:

我有一个函数,它只工作它的笨重,我知道它可以写得更好,他们是一种结合下面的方法吗?

$('#calculateAll').click(function()        
    if( $('.a').val() === '' ) 
        $('.a').css('border-color','#BE1E2D');
        return false;
     else if( $('.b').val() === '' ) 
        $('.b').css('border-color','#BE1E2D');
        return false;
     else if( $('.c').val() === '' ) 
        $('.c').css('border-color','#BE1E2D');
        return false;
     else if( $('.d').val() === '' ) 
        $('.d').css('border-color','#BE1E2D');
        return false;
     else ...

【问题讨论】:

【参考方案1】:

您可以为此使用 jQuery .each() 函数。

$('.a, .b, .c, .d').each(function() 
  if ($(this).val() == '') 
    $(this).css('border-color','#BE1E2D');
    return false;
  
);

【讨论】:

你应该添加一个 return false; if 中的语句与 Liam 的代码具有相同的效果 你说得对,谢谢。我编辑了答案。 请注意,这不会在$('#calculateAll').click(function() .. ); 函数中返回false,而是在.each(function() .. ); 函数中返回。【参考方案2】:

看来您正在验证某些内容。与其他答案不同,他们忘记了不仅仅是迭代元素并在为空时给它们一个红色边框。

$('#calculateAll').on('click', function() 

  var err = false;
  // I would recommend using a class for these elements or a better selector
  $('.a, .b, .c, .d').each(function() 
    if ($(this).val() === '') 
      $(this).css('border-color','#BE1E2D');
      err = true;
      // If you don't want to add a border-color to the other elements, return false and break the loop
      return false;
    
  );

  // Was something empty?
  if (err) 
    return false;
  

  // All good, let's continue
  ...

);

【讨论】:

这不会给他与他的代码相同的结果。他的代码在他添加边框的那一刻返回 false ;)请参阅 krisd 答案以了解正确的循环 @Pinoniq 是的。我添加了对迭代的返回和解释,以便他可以选择任何一种方式。【参考方案3】:

一种可能的更短的方法是执行以下操作:

$('#calculateAll').click(function()         
    var $invalidElements = $(".a, .b, .c, .d")
                           .css('border-color', '')
                           .filter(function()  return $(this).val() === "" ).first()
                           .css('border-color', '#BE1E2D');

    if ($invalidElements.length > 0) 
        return false;
    
    else 
        // code executed when all elements are valid
    
);

我建议删除.first(),以便您可以同时验证所有元素。此外,我添加了.css('border-color', '') 行,以在验证之前清除所有元素的边框颜色。

【讨论】:

【参考方案4】:

演示:http://jsfiddle.net/U7t4p/1/

首先使用.filter()找到空输入

$('.container input[type="text"]').filter(function()  
    return this.value === ''; 
)

该方法遍历所有匹配的元素,如果回调返回true,则将当前元素添加到返回的jQuery对象中。

最后我们将 CSS 类应用于这些元素:

.addClass('hl');

【讨论】:

以上是关于使用jQuery检查值是不是为空[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查可为空的布尔值是不是为空[重复]

检查返回的值是不是为空[重复]

检查 jquery 的多个输入的值是不是为空的更短方法

如何检查提交时输入字段是不是为空[重复]

C# 如何检查空值。 (值为空)或(空 == 值)。我们可以使用`is`运算符而不是==运算符[重复]

检查输入值是不是为空并显示警报