您需要編輯插件作爲這裏概述:
http://bitsmash.wordpress.com/2012/10/01/making-disabled-elements-visible-with-the-jquery-chosen-plugin/
該插件在選擇讀取,從DOM中刪除,並增加了一個新的UL。選項標記爲「已禁用」,並稱李時新UL
這裏是興趣chosen.jquery.js方法
AbstractChosen.prototype.result_add_option = function(option) {
var classes, style;
if (!option.disabled) {
option.dom_id = this.container_id + "_o_" + option.array_index;
classes = option.selected && this.is_multiple ? [] : ["active-result"];
if (option.selected) classes.push("result-selected");
if (option.group_array_index != null) classes.push("group-option");
if (option.classes !== "") classes.push(option.classes);
style = option.style.cssText !== "" ? " style=\"" + option.style + "\"" : "";
return '<li id="' + option.dom_id + '" class="' + classes.join(' ') + '"' + style + '>' + option.html + '</li>';
} else {
return "";
}
};
注意,如果一個選項被禁用它沒有返回值被跳過。採取行
return "";
並放在html/css你想爲一個禁用的項目。或者,您可以刪除if(!option.disabled)塊,並添加一個新的if(!option.disabled)塊,以便在禁用該項時添加特殊的CSS類。
接下來,您需要確保用戶單擊禁用的項目時什麼都不會發生。你需要編輯這個方法:
Chosen.prototype.result_select = function(evt) {
var high, high_id, item, position;
if (this.result_highlight) {
high = this.result_highlight;
high_id = high.attr("id");
this.result_clear_highlight();
if (this.is_multiple) {
this.result_deactivate(high);
} else {
this.search_results.find(".result-selected").removeClass("result-selected");
this.result_single_selected = high;
this.selected_item.removeClass("chzn-default");
}
high.addClass("result-selected");
position = high_id.substr(high_id.lastIndexOf("_") + 1);
item = this.results_data[position];
item.selected = true;
this.form_field.options[item.options_index].selected = true;
if (this.is_multiple) {
this.choice_build(item);
} else {
this.selected_item.find("span").first().text(item.text);
if (this.allow_single_deselect) this.single_deselect_control_build();
}
if (!(evt.metaKey && this.is_multiple)) this.results_hide();
this.search_field.val("");
if (this.is_multiple || this.form_field_jq.val() !== this.current_value) {
this.form_field_jq.trigger("change", {
'selected': this.form_field.options[item.options_index].value
});
}
this.current_value = this.form_field_jq.val();
return this.search_field_scale();
}
};
補充一點說,如果禁用,則返回false,那麼當用戶在該項目上什麼都不會發生單擊一個塊。
您可以檢查在Firebug的元素,看看是否有元素的風格''display:none;'',''visibility:hidden''或'opacity:0''?還是完全從DOM中刪除? – Ohgodwhy
很抱歉,我編輯了這個問題。 – take
我看了一下插件的Source和Docs。很明顯,「選擇」會自動突出顯示選定的選項並刪除禁用的選項。正如DOCS中直接提到的那樣。仔細檢查發現,你將有一個乾草日重新配置。 – Ohgodwhy