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>
Затем он позволяет мне проверять поле.
Ответы
Ответ 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;" />