如何为这个简单的验证添加规则? - jQuery

时间:2014-11-01 02:37:07

标签: javascript jquery

我正在尝试编写一个非常简单的表单验证,这里是我所拥有的示例代码片段:

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 个答案:

答案 0 :(得分:1)

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

  1. $('input[name=name]').val()
  2. $('input[name=email]').val()
  3. $('input[name=company]').val() == ""
  4. 请注意,在这种情况下,前两个只是值。最后一个是使用类型cohersion。如果你试图避免使用类型cohersion(因为你首先提出这个问题很可能是这样),那么你需要提供完整的表达式:

    1. $('input[name=name]').val() === ''
    2. $('input[name=email]').val() === ''
    3. $('input[name=company]').val() === ''
    4. 将这些放在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) {
        ...
      }
      

答案 1 :(得分:0)

&&优先于==。这意味着您的表达式将被评估为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() == "")

答案 2 :(得分:0)

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

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

说实话,在懒惰的日子里,我希望另一种方式也能奏效。但幸运的是,这并不是逻辑如何运作的。