validate.js требует "имя" в теге, когда вы используете комбинированный список автозаполнения jqueryui.
Сгенерированный код не имеет атрибутов id
и name
, поэтому их необходимо добавлять по мере необходимости.
В функции _create
для выпадающего списка вам необходимо добавить:
select = this.element.hide(),
select_id = select.attr('id'),
selected = select.children(":selected"),
и
input = $("<input>")
.attr('id', select_id + '_combobox')
.attr('name', select_id + '_combobox')
.appendTo(wrapper)
Такой, учитывая HTML, вот так:
<select id="dropDownlist">
<option...
</select>
autocomplete-combobox
сгенерирует необходимый элемент input
с атрибутами id
и name
, установленными в dropDownlist_combobox
с этим у меня есть полный контроль над этим автоматически сгенерированным тегом htmls из jqueryui-autocomplete-combobox
Затем вы можете применить правила проверки к элементу input
(dropDownlist-combobox
)
Это будет выглядеть примерно так:
$('#dropDownlist_combobox').rules('add', {
required: true,
messages: {
required: 'Please enter your combobox'
}
});
и вуаля:)
Однако при этом вы получите сообщение об ошибке, отображаемое между тегом input
и кнопкой «выпадающий список». Чтобы это исправить, вам понадобится дополнительный код:
$.validator.setDefaults({
errorPlacement: function (error, element) {
if (element.context.id.indexOf('_combobox') == -1)
error.insertAfter(element);
else
error.appendTo(element.parent());
}
});
Весь код для примера доступен на http://jsfiddle.net/XhU78/
Я надеюсь, что работает для вас:)