Javascript 如何将规则添加到此简单验证中jQuery

Javascript 如何将规则添加到此简单验证中jQuery,javascript,jquery,Javascript,Jquery,我正在尝试编写一个非常简单的表单验证,下面是一个示例片段,它是我的工作原理: if($('input[name=name]').val() == ""){ e.preventDefault(); alert('prevented') } 如果if语句中有一条规则,它就起作用了。我想做的是,在if语句中添加更多的规则,例如: input[name=email] input[name=company] 但像这样的事情是行不通的: if($('input[name=name]').

我正在尝试编写一个非常简单的表单验证,下面是一个示例片段,它是我的工作原理:

if($('input[name=name]').val() == ""){
    e.preventDefault();
    alert('prevented')
}
如果if语句中有一条规则,它就起作用了。我想做的是,在if语句中添加更多的规则,例如:

input[name=email]
input[name=company]
但像这样的事情是行不通的:

if($('input[name=name]').val() && $('input[name=email]').val() && $('input[name=company]').val() == "")
有没有办法把这三条规则加进去?它似乎不适合只使用&&


谢谢你的帮助

&&
优先于
=
。这意味着您的表达式被计算为3个不同的表达式,所有这些表达式都需要满足。这些是:
$('input[name=name]').val()
$('input[name=email]').val()
$('input[name=company]')。val()==“”

您可能希望所有3个值都等于
,在这种情况下,您需要执行以下操作:

if($('input[name=name]').val()    == "" &&
   $('input[name=email]').val()   == "" &&
   $('input[name=company]').val() == "")

和&
单独的表达式。在您的示例中,三个表达式是:

  • $('input[name=name]').val()
  • $('input[name=email]').val()
  • $('input[name=company]')。val()=“”
  • 请注意,在本例中,前两个只是值。最后是使用类型内聚。如果您试图避免类型内聚(因为您首先提出的问题很可能是这样),那么您需要提供完整的表达式:

  • $('input[name=name]')。val()=''
  • $('input[name=email]')。val()=''
  • $('input[name=company]')。val()=''
  • 将这些放在if语句中:

    if ($('input[name=name]').val() === '' &&
      $('input[name=email]').val() === '' &&
      $('input[name=company]').val() === '') {
      ...
    }
    
    或在可读性方面:

    var isNotEmpty = function(inputName) {
      var selector = 'input[name=' + inputName + ']';
      return $(selector).val() !== '';
    }
    
    var isValid = ['name', 'email', 'company'].every(isNotEmpty);
    
    if (!isValid) {
      ...
    }
    

    您需要单独比较每个值,然后通过
    &

    if($('input[name=name]').val() == "" &&
       $('input[name=email]').val() == "" &&
       $('input[name=company]').val() == "")
    

    老实说,在懒惰的日子里,我希望另一种方法也能奏效。谢天谢地,逻辑并非如此。

    请详细说明前两条规则。