[英]How to filter select options with jQuery?
我試圖基於另一個選擇框invoice_project_id
中選擇的值來過濾一個選擇框person
內的選項:
<select id="invoice_project_id">
<option value="1">Project A</option>
<option value="2">Project B</option>
<option value="3">Project C</option>
</select>
<select id="person">
<option data-project_ids="[1,2]">Spencer, Eve</option>
<option data-project_ids="[3]">Goodwin, Alisha</option>
<option data-project_ids="[]">Emard, Tito</option>
<option data-project_ids="[2,3]">Bergstrom, Damien</option>
</select>
這是到目前為止的jQuery:
function filterOption(id) {
return $('#person option').filter(function () {
return $.inArray(id, $(this).data('project_ids')) > -1
});
}
$('#invoice_project_id').on('change', function() {
var project = $('#invoice_project_id :selected').val();
var options = filterOption(parseInt(project));
if (options) {
return $('#person').html(options);
} else {
return $('#person').empty();
}
});
該函數filterOption()
由該論壇上的某個人提供,但是由於我缺乏jQuery的經驗,因此無法將其集成到我的代碼中。
有人可以幫忙嗎?
非常感謝。
由於filterOption
函數返回jQuery集合,因此您可以隱藏選項並在返回的集合上調用.show()
:
$('#invoice_project_id').on('change', function() {
var project = $('#invoice_project_id').val();
$('#person option').hide();
filterOption(+project).show();
});
請注意,並非所有瀏覽器都處理顯示/隱藏option
元素。 或者,您可以通過修改disabled
屬性來禁用/啟用選項:
$('#person option').prop('disabled', true);
filterOption(+project).prop('disabled', false)
.first()
.prop('selected', true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.