コンボボックスを使用する機会はありますか。コンボボックスで何かを選択するたびに、選択するデータがなくなるまで、新しいコンボボックスなどが開きます。
(オプションは繰り返さないでください)
Combo1-(opt1-opt2-opt3)-選択されたopt1
Combo2-(opt2-opt3)-選択されたopt3
Combo3-(opt2)
コンボボックスには、phpとmysqlを使用したクエリを入力する必要があります。
どうすればいいですか?乾杯!
コンボボックスを使用する機会はありますか。コンボボックスで何かを選択するたびに、選択するデータがなくなるまで、新しいコンボボックスなどが開きます。
(オプションは繰り返さないでください)
Combo1-(opt1-opt2-opt3)-選択されたopt1
Combo2-(opt2-opt3)-選択されたopt3
Combo3-(opt2)
コンボボックスには、phpとmysqlを使用したクエリを入力する必要があります。
どうすればいいですか?乾杯!
これを行うjqueryは次のとおりです。
HTML
<select id="combo1" class="combo" data-index="1">
<option></option>
<option val="Opt1">Opt1</option>
<option val="Opt2">Opt2</option>
<option val="Opt3">Opt3</option>
</select>
Javascript
$('body').on('change', '.combo', function() {
var selectedValue = $(this).val();
if ($(this).find('option').size() > 2) {
var newComboBox = $(this).clone();
var thisComboBoxIndex = parseInt($(this).attr('data-index'), 10);
var newComboBoxIndex = thisComboBoxIndex + 1;
$('.parentCombo' + thisComboBoxIndex).remove();
if (selectedValue !== '') {
newComboBox.attr('data-index', newComboBoxIndex);
newComboBox.attr('id', 'combo' + newComboBoxIndex);
newComboBox.addClass('parentCombo' + thisComboBoxIndex);
newComboBox.find('option[val="' + selectedValue + '"]').remove();
$('body').append(newComboBox);
}
}
});
説明
// Adds an event listener to each combo box that is created dynmically
$('body').on('change', '.combo', function() {
// Gets this selected value
var selectedValue = $(this).val();
// Checks if there are enough options left to create another combo box
if (selectedValue !== '' && $(this).find('option').size() > 2) {
// Clones the just selected combo box and get the current and next combo index
var newComboBox = $(this).clone();
var thisComboBoxIndex = parseInt($(this).attr('data-index'), 10);
var newComboBoxIndex = thisComboBoxIndex + 1;
// Removes any "children" combo boxes
$('.parentCombo' + thisComboBoxIndex).remove();
// Checks if a blank value is not selected to create another combo box
if (selectedValue !== '' && $(this).find('option').size() > 2) {
// Gives this new combo box the correct id, index, parent class
newComboBox.attr('data-index', newComboBoxIndex);
newComboBox.attr('id', 'combo' + newComboBoxIndex);
newComboBox.addClass('parentCombo' + thisComboBoxIndex);
// Removes the selected option from the new combo box
newComboBox.find('option[val="' + selectedValue + '"]').remove();
// Adds the combo box to the page. Disco!
$('body').append(newComboBox);
}
}
});