根据第一个 select 框选项更新第二个 select 框选项
update second select box options based on the first select box options
我有以下 select 个盒子。
<select id="directorate">
<option value="1|CEO">CEO</option>
<option value="2|Community">Community</option>
<option value="3|Media">Media</option>
<option value="4|Development">Development</option>
<option value="5|Social">Social</option>
</select>
<select id="department">
<option value="1">A</option>
<option value="1">B</option>
<option value="1">C</option>
<option value="2">D</option>
<option value="3">E</option>
<option value="3">F</option>
<option value="3">G</option>
</select>
当我select CEO 担任董事会时,它应该只显示部门列表中的A 和B。下面是我的示例 jquery 代码。由于某种原因,它不起作用,如果有人能指导我走正确的道路,那就太好了!
$('#directorate').change(function() {
var rawValue = $(this).val().split('|');
$('#department option').each(function () {
var NewValue = $(this).val().split('|');
if (rawValue[0] !== newValue[0]) {
$(this).remove();
}
});
});
试试这个:您正在删除不需要的选项,因此当您更改 directorate 选项时,它在下一个 select 框中找不到所需的选项。相反,您可以显示/隐藏选项,请参见下面的代码
$('#directorate').change(function() {
var rawValue = $(this).val().split('|');
//hide all options by default
$('#department option').hide();
$('#department').find('option[value="' + rawValue[0] + '"]').hide();
});
我在您的解决方案中发现了很多错误,其中之一是您在 if 语句中使用 newValue
但您声明 NewValue
instead.Here 是一个有效的解决方案
$('#directorate').change(function() {
$('#department').val( '' );
var rawValue = $(this).val().split('|');
$('#department option').each(function () {
var newValue = $(this).val();
if (rawValue[0] != newValue[0] && rawValue[0] != "") {
$(this).hide();
}
else{$(this).show(); }
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<select id="directorate">
<option value="">---</option>
<option value="1|CEO">CEO</option>
<option value="2|Community">Community</option>
<option value="3|Media">Media</option>
<option value="4|Development">Development</option>
<option value="5|Social">Social</option>
</select>
<select id="department">
<option value="">---</option>
<option value="1">A</option>
<option value="1">B</option>
<option value="1">C</option>
<option value="2">D</option>
<option value="3">E</option>
<option value="3">F</option>
<option value="3">G</option>
</select>
编辑
I have noticed that jquery's hide/show
doesn't really work well with IE.
这是一个替代方案
$( document ).ready(function() {
var options = $('#department').children().clone();
$('#directorate').change(function() {
$('#department').children().remove();
var rawValue = $(this).val().split('|');
options.each(function () {
var newValue = this.value;
if (rawValue[0] == newValue[0] || rawValue[0] =="") {
$('#department').append(this);
}
});
$('#department').val('');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="directorate">
<option value="">---</option>
<option value="1|CEO">CEO</option>
<option value="2|Community">Community</option>
<option value="3|Media">Media</option>
<option value="4|Development">Development</option>
<option value="5|Social">Social</option>
</select>
<select id="department">
<option value="">---</option>
<option value="1">A</option>
<option value="1">B</option>
<option value="1">C</option>
<option value="2">D</option>
<option value="3">E</option>
<option value="3">F</option>
<option value="3">G</option>
</select>
我有以下 select 个盒子。
<select id="directorate">
<option value="1|CEO">CEO</option>
<option value="2|Community">Community</option>
<option value="3|Media">Media</option>
<option value="4|Development">Development</option>
<option value="5|Social">Social</option>
</select>
<select id="department">
<option value="1">A</option>
<option value="1">B</option>
<option value="1">C</option>
<option value="2">D</option>
<option value="3">E</option>
<option value="3">F</option>
<option value="3">G</option>
</select>
当我select CEO 担任董事会时,它应该只显示部门列表中的A 和B。下面是我的示例 jquery 代码。由于某种原因,它不起作用,如果有人能指导我走正确的道路,那就太好了!
$('#directorate').change(function() {
var rawValue = $(this).val().split('|');
$('#department option').each(function () {
var NewValue = $(this).val().split('|');
if (rawValue[0] !== newValue[0]) {
$(this).remove();
}
});
});
试试这个:您正在删除不需要的选项,因此当您更改 directorate 选项时,它在下一个 select 框中找不到所需的选项。相反,您可以显示/隐藏选项,请参见下面的代码
$('#directorate').change(function() {
var rawValue = $(this).val().split('|');
//hide all options by default
$('#department option').hide();
$('#department').find('option[value="' + rawValue[0] + '"]').hide();
});
我在您的解决方案中发现了很多错误,其中之一是您在 if 语句中使用 newValue
但您声明 NewValue
instead.Here 是一个有效的解决方案
$('#directorate').change(function() {
$('#department').val( '' );
var rawValue = $(this).val().split('|');
$('#department option').each(function () {
var newValue = $(this).val();
if (rawValue[0] != newValue[0] && rawValue[0] != "") {
$(this).hide();
}
else{$(this).show(); }
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<select id="directorate">
<option value="">---</option>
<option value="1|CEO">CEO</option>
<option value="2|Community">Community</option>
<option value="3|Media">Media</option>
<option value="4|Development">Development</option>
<option value="5|Social">Social</option>
</select>
<select id="department">
<option value="">---</option>
<option value="1">A</option>
<option value="1">B</option>
<option value="1">C</option>
<option value="2">D</option>
<option value="3">E</option>
<option value="3">F</option>
<option value="3">G</option>
</select>
编辑
I have noticed that jquery's
hide/show
doesn't really work well with IE.
这是一个替代方案
$( document ).ready(function() {
var options = $('#department').children().clone();
$('#directorate').change(function() {
$('#department').children().remove();
var rawValue = $(this).val().split('|');
options.each(function () {
var newValue = this.value;
if (rawValue[0] == newValue[0] || rawValue[0] =="") {
$('#department').append(this);
}
});
$('#department').val('');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="directorate">
<option value="">---</option>
<option value="1|CEO">CEO</option>
<option value="2|Community">Community</option>
<option value="3|Media">Media</option>
<option value="4|Development">Development</option>
<option value="5|Social">Social</option>
</select>
<select id="department">
<option value="">---</option>
<option value="1">A</option>
<option value="1">B</option>
<option value="1">C</option>
<option value="2">D</option>
<option value="3">E</option>
<option value="3">F</option>
<option value="3">G</option>
</select>