У меня есть <select>
, который мне нужно преобразовать в более функциональный combobox.JQuery UI Autocomplete Combobox highlight
<span class="combo_box">
<select id="state" name="state" tabindex="24">
<option value="" disabled selected style="display:none"></option>
<!-- Some JSP here -->
</select>
</span>
И я трансформировал его в к виджету (так оригинален <select>
с идентификатором «состояние» все еще там, но скрытый) как этот $("#state").combobox();
Что мне нужно, чтобы добавить изюминку ошибки в этом пользовательском виджет на форме представления, если выпадающие пусто. Для этого пользовательский интерфейс jQuery имеет собственный CSS-класс ui-state-error
.
Validation скрипт (работает отлично, как я его отладки)
function setComboboxClassBeforeSubmit(elementID) {
var flag = true;
var element = document.getElementById(elementID);
var combobox = $(element).combobox();
combobox.removeClass('ui-state-error');
if (isEmpty(element)) {
combobox.addClass('ui-state-error');
flag = false;
}
return flag;
}
Но добавив этот класс CSS кажется, не имеют никакого влияния на виджете внешний вид. Также попробовал hardcode, как было показано here, что-то вроде $("#state").addClass('ui-state-error')
и до сих пор не повезло. Также попробовал this solution, отлично работает для selectmenu, но не для combobox.
Возможное решение: (благодаря nowhere)
Редактирование _createAutocomplete: function()
так:
_createAutocomplete: function() {
var selected = this.element.children(":selected"),
value = selected.val() ? selected.text() : "";
this.input = $("<input>")
.appendTo(this.wrapper)
.val(value)
.attr("title", "")
.attr("id", "ui-" + this.element.attr("id") + "-input")
...
Издание является - по умолчанию API не создает уникальные идентификаторы для элементов управления ComboBox в.
Вы уверены, что не применяете класс к скрытому выбору? : P – nowhere
@ nowhere, что является ядром проблемы, в рабочем решении, о котором я упоминал, они использовали некоторые сгенерированные id для элементов виджета. Но я не нашел id для элементов combobox (автозаполнение и кнопка). – Ahnassi
Также: насколько мне известно style = "display: none" не работает в каждом браузере при добавлении в параметры. Вы пробовали это со старыми версиями IE? – nowhere