Подтвердить что ты не робот

Jquery validator plugin с дисплеем: нет элементов формы

Я использую плагин validator, найденный здесь, чтобы проверить форму.

Проблема, с которой я столкнулась, заключается в том, что если я поставлю следующее вокруг элемента ввода формы, проверка не выполняется:

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

Мне нужно это, потому что я использую другие уровни управления пользовательского интерфейса для входных элементов и не хочу, чтобы они были видимыми.

Он работает с встроенными и блочными элементами, но мне нужно, чтобы это было скрыто. Есть ли способ обойти это?

Спасибо за любую обратную связь

Update:

Я в основном проверяю поля опций выбора с помощью 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>

Затем он позволяет мне проверять поле.

4b9b3361

Ответ 1

Из 1.9.0 журнала изменений jQuery Validate:

  • Исправлено # 189 -: скрытые элементы теперь игнорируются по умолчанию

Чтобы включить его, просто выполните следующие действия:

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

Убедитесь, что это отображается до, вы вызываете фактический плагин проверки в своем коде.

Надеюсь, это поможет!

Ответ 2

Мне нравится ответ @dSquared, но, к сожалению, свойство "игнорировать" будет сброшено для каждого модуля проверки формы на странице. В некоторых случаях это не нужно.

Я использую этот способ:

$(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 initializers which will hide origin elements (it can be CLEditor or Choosen plugins)
});

Ответ 3

Вы пытались добавить атрибут стиля к элементу ввода? Поэтому вместо того, чтобы обернуть его div, попробуйте:

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

Ответ 4

Есть две вещи, которые вы можете сделать.

1) вы можете статически установить значение, которое не вызывает проверки, для этого поля ввода, например

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

2) Если вы хотите пренебречь этим значением в своем методе проверки.

Я был бы признателен, если бы вы могли предоставить более подробный код.

Ответ 5

Другой формой для решения этой проблемы является изменение display: none на visibility: hidden.

Например: <input type="text" name="test" value="" style="visibility: hidden;" />