26

我正在使用此处找到的验证器插件来验证表单。

我遇到的问题是,如果我将以下内容放在表单输入元素周围,验证将失败:

<div style="display:none;"><input type="text" name="test" /></div>

我需要这个,因为我正在为输入元素使用其他 UI 控件层并且不希望它们可见。

它适用于内联和块元素,但我需要隐藏它。有没有办法解决这个问题?

感谢您的任何反馈

更新:

我主要使用 django 验证选择选项字段(即: {{form.select_option_element}} )

如此有效:

<div style="display:none;">
    {{form.select_option_element}}
</div>

...不起作用

发布后我似乎解决了这个问题:

<div style="visibility: hidden; height: 0;">
     {{form.select_option_element}}
</div>

然后它允许我验证该字段。

4

5 回答 5

56

来自jQuery Validate的 1.9.0 更改日志:

  • 固定 #189 - :hidden 元素现在默认被忽略

要重新打开它,只需执行以下操作:

$(document).ready(function(){    
    $.validator.setDefaults({
        ignore: []
    });
});

确保在您调用代码中的实际验证插件之前出现此信息。

我希望这有帮助!

于 2012-09-06T21:21:29.007 回答
4

我喜欢@dSquared 的答案,但不幸的是,'ignore'-property 将为页面上的每个表单的验证器重置。在某些情况下它不需要。

我用这种方式:

$(document).ready(function () {

    var $form = $("#some-form");

    $form.validate().settings.ignore = []; // ! Say to validator dont ignore hidden-elements on concrete form.

    $('#button-send').click(function () {
        if ($form.valid()) { .. }
    });

    // !! apply plugin's initializers which will hide origin elements (it can be CLEditor or Choosen plugins)
});
于 2013-06-26T08:48:32.080 回答
1

您是否尝试将样式属性添加到输入元素?因此,不要用div包装它,而是尝试:

<input type="text" name="test" value="" style="display: none;" />
于 2012-09-06T20:57:39.527 回答
0

你可以做两件事。

1)您可以为此输入字段静态设置不会失败验证的值,例如

<div style="display:none;"><input type="text" name="test" value="default" /></div>

2)如果你想在你的验证方法中否定这个值。

如果您能提供更详细的代码,我将不胜感激。

于 2012-09-06T20:59:48.543 回答
0

解决此问题的另一种形式是display: nonevisibility: hidden.

例如:<input type="text" name="test" value="" style="visibility: hidden;" />

于 2017-10-26T12:30:10.707 回答