[英]How to select multiple values without ctrl key when select values are loaded dynamically as a function of another select
我在Web應用程序中使用了“ wicket”框架。 我有兩個這樣的選擇:
<select wicket:id="brands" onchange="applyMultiSelection ();">
<option value="volvo">Volvo</option>
</select>
<select wicket:id="models" id="models">
<option value="A">A</option>
</select>
使用小門模型,在選擇第一個值之后,將動態加載第二個值。 第二個是多重選擇(由檢票口的ListMultipleChoice創建)。
為了在不按ctrl鍵的情況下選擇多個值,我在html頭中添加了以下內容:
<script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
<style type="text/css">
.multi-selection {
background-color: Highlight;
color: HighlightText;
}
</style>
<script type="text/javascript">
// Applies multiselection on select tags
var multiselection = function(){
$("#models").MultiSelect({
css_class_selected: "multi-selection"
});
};
function applyMultiSelection () {
$('#models').ready( multiselection() );
}
</script>
它似乎不起作用,我在靜態html中為多選擇嘗試了類似的方法,它允許我只用鼠標單擊就可以選擇多個值,因此我懷疑自己可能接近解決方案。 有任何想法嗎?
看起來您將代碼放在頭部分中,應該嘗試執行以下操作:
<script type="text/javascript">
$(function(){
// Applies multiselection on select tags
var multiselection = (function(){
$("#models").MultiSelect({
css_class_selected: "multi-selection"
})();
};
});
</script>
我認為主要問題是值是動態更新的,在您的代碼運行時select
可能為空。 通過將功能合並為一個,可以大大縮短腳本。
$(function(){ // this is short for $(document).ready()
function applyMultiSelection (){
$("#models").MultiSelect({
css_class_selected: "multi-selection"
});
};
});
如果您無法編輯腳本以添加觸發事件或類似事件,則建議使用以下插件。
https://github.com/hazzik/livequery/blob/master/jquery.livequery.js
該插件將檢查是否添加或創建了新的option
元素。 現在,每次您動態添加新元素時,插件都應運行.MultiSelect()
$(function(){
$("#models option").livequery(function () {
$("#models").MultiSelect({
css_class_selected: "multi-selection"
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.