【问题标题】:Jquery Validate Multiple ConditionsJquery 验证多个条件
【发布时间】:2013-09-26 00:52:58
【问题描述】:

我正在尝试验证具有多个条件的字段。我已经对单个条件进行了验证,但我不确定如何添加 addl 条件。这是我目前所拥有的:

priceEstimate: {
          required: function() {
          return $('#jobType').val() != '8';
          }
        }

我还需要确保#jobType 的值不等于“9”或“10”。我尝试使用 or 运算符,但这似乎没有奏效。

任何帮助将不胜感激。

【问题讨论】:

  • 不要为 required 规则编写复杂的函数,而是考虑使用 addMethod 方法创建一个全新的自定义方法。

标签: javascript jquery validation jquery-validate


【解决方案1】:
priceEstimate: {
          required: function() {
          var jobType = $('#jobType').val();
             if (jobType < '8' && jobType > 10)
             {
                 return true;
             }else{
                 return false;
             }
          }
        }

可能有更简单的方法来编写它......但你会这样做。 http://www.w3schools.com/js/js_comparisons.asp


回应杰里米的评论:

priceEstimate: {
    required: function ()
    {
        var jobType = Number($('#jobType').val());
        var _return = true;
        switch (true)
        {
            case (jobType <= 1):
            case (jobType >= 8 && jobType <= 10):
                  _return = false;  
                break;
        }
        return _return;
    }
}

好的,我们在这里做的是级联开关。表达式设置为 true,因此它将运行每个案例......然后我们将我们的逻辑放在每个单独的案例中。

我们知道我们不想要 1 或 0,所以我只是将其设置为 false,如果它等于或小于 1,在这种情况下没有中断,它将简单地运行到下一个情况并验证更进一步,所以为了你自己的理智,你会想尽量保持案件的顺序 -> 如果没有的话,最好是最好的,哈哈。

我还使用 Number() 来充实输入中的数值,以防万一,这样我们也不必用引号 ('10') 封装所有检查,它们是被视为实际数字,而不仅仅是可能被翻译成会使您所追求的逻辑失败的表示。

【讨论】:

  • 我有一个值为 '0' 的 jobType 和另一个值为 '1' 的 jobType,它们无法使用此方法进行验证。所有其他 jobTypes (2-7) 工作得很好。知道如何解决这个问题吗?
  • 我很欣赏这次更新,但是,这会导致与原始方法相同的行为。除了 jobType 0 和 jobType 1 之外,一切正常。
  • 下班回家后我会再测试一下……今天很忙:D。只剩下大约一个小时了,哈哈。
  • 只是想回来看看这个。这种方法仍然无法正确验证 0 和 1。其他一切都正确验证。
猜你喜欢
  • 2014-12-18
  • 2023-03-08
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多