【问题标题】:Javascript validating numerous fieldsJavascript 验证多个字段
【发布时间】:2011-10-12 21:14:54
【问题描述】:

我正在尝试通过 javascript/jQuery 进行多项验证。我需要知道我可以使用什么样的逻辑。

我有大约 15 个字段需要验证。我在想是否可以使用返回值为 true 或 false 来验证每个字段。然后我会检查是否有任何返回值是假的。如果是,则不验证表单。这有意义吗?

或者对于一个又一个字段,我是否必须通过一组 if else 嵌套条件?

PS:我不想使用 jQuery 验证插件,因为我的表单很少有复杂性。

让我知道你认为我应该怎么做。

谢谢。

【问题讨论】:

  • 我们可以获取您的表格示例吗?
  • 您可以采用任何形式的示例。我需要知道如何验证几个字段的逻辑。我使用嵌套的 if-else 吗?还是分别验证每个字段?我想我可能必须单独验证每个字段,因为如果表单无法验证,那么我需要告诉具体的错误消息。
  • 我想你刚刚回答了你自己的问题;)

标签: javascript jquery


【解决方案1】:

是的,这是您可以做到的一种方式,但显然您必须将结果包含在某种数据结构中。您可以有一个 key->value 的对象,其中 key 是您正在验证的字段的 id,然后值是 true 或 false,具体取决于您的验证。然后只需遍历您的对象并检查错误值!

【讨论】:

  • 如果有错误,只需将值设为错误消息,如果通过,则将值设为真。在这种情况下,您只需执行 if (value != true){your code...}
  • $.each(validationElements, function(key,value){ { if (value != true){your code...} });
【解决方案2】:

然后我会添加一个所需的 css 类

$('.required').each(function (i) {

});

【讨论】:

    【解决方案3】:

    你可以使用像对象这样的错误哈希。

    $('#target').submit(function (e) {
      var errors = {};
    
      //No field should be blank
      $('.required').each(function () {
        if (!$.trim($(this).val())) errors[$(this).prev('label').text()] = 'is blank';
      });
      //Don't submit form on errors
      //Show errors
      if (!jQuery.isEmptyObject(errors)) {
        $('.error').show().html("<p>Form couldn't be submitted because:</p>");
        $('.error').append(
        $.map(errors, function (type, error) {
          return $('<p>', {
            text: error + '  ' + type
          }).get();
        }));
        // Prevent the form from being submitted
        return false;
      }
      $('.error').hide();
    });
    

    Customary jsFiddle link

    【讨论】:

      【解决方案4】:

      这是一个不要脸的插件,但是你试过regula吗?我正在积极开发它,并且我知道至少另一个正在使用它的人(耶!)。它可能会解决您的一些并发症。另外,如果您可以用您的并发症更新您的问题,我可以告诉您如何在规则中做到这一点。它将使您不必编写自己的验证。

      regula 还将其验证结果作为约束违规数组返回,因此您可以查看哪个元素未通过验证(以及其他内容)。

      This answer 有更多关于 regula 功能的信息,如果你有兴趣的话。

      【讨论】:

        猜你喜欢
        • 2020-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-18
        • 2015-02-07
        • 2019-02-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多