关于 select 事件重写数据列表
on select event rewrite data list
我有两个 "from" 和 "to" 下拉列表字段。我只想在选择 "from" 数字时重写 "to" 数字列表数据,其中数字大于 "from" 值数字。并且当 "to" 号码选择重写 "from" 号码列表时相同的后台软件,其中号码小于然后选择 "to" 值。
我正在创建三个事件:
1) 从项目选择事件开始只在第一次工作,其余时间工作不正确
2) 在项目选择事件上只有第一次相同的工作墨水,其余时间工作不正确
3) 从项目清除事件开始重置所有数据列表但工作不正确:仅重置 "to" 数据列表,"from" 数据列表仅清除。
html代码:
<select id="formadditional-age_from" class="form-control"
name="FormAdditional[age_from]">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<select id="formadditional-age_to" class="form-control" name="FormAdditional[age_to]">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
jquery代码:
const select2Conf = {
allowClear: true,
minimumResultsForSearch: -1,
width: 200
},
age_to_item = $('#formadditional-age_to'),
age_from_item = $('#formadditional-age_from'),
age_option_list = $('option', age_from_item).clone();
age_from_item.select2({
...select2Conf,
placeholder: 'From',
});
age_to_item.select2({
...select2Conf,
placeholder: 'To',
});
age_from_item.on('select2:select', function(e){
let data = e.params.data,
val = age_to_item.val();
age_to_item
.html(age_option_list.filter(o => age_option_list[o].value === '' || parseInt(age_option_list[o].value)>=parseInt(data.id)))
.val(val).trigger('change');
});
age_to_item.on('select2:select', function(e){
let data = e.params.data,
val = age_from_item.val();
age_from_item
.html(age_option_list.filter(o => age_option_list[o].value === '' || parseInt(age_option_list[o].value)<=parseInt(data.id)))
.val(val).trigger('change');
});
age_from_item.on('select2:clearing', function(e){
$(this)
.html(age_option_list)
.val("").trigger('change');
age_to_item
.html(age_option_list)
.val("").trigger('change');
});
https://jsfiddle.net/bemulima/18mkrbe2/21/
为什么我的代码无法正常工作?
<select class="form-control" name="from">
<option value="">Choose</option>
<option value="1000">1000 cc</option>
<option value="1200">1200 cc</option>
<option value="1400">1400 cc</option>
<option value="1600">1600 cc</option>
<option value="1800">1800 cc</option>
<option value="2000">2000 cc</option>
<option value="2500">2500 cc</option>
<option value="3000">3000 cc</option>
<option value="3500">3500 cc</option>
<option value="4000">4000 cc</option>
</select>
<select class="form-control" name="to">
<option value="">Choose</option>
<option value="1000">1000 cc</option>
<option value="1200">1200 cc</option>
<option value="1400">1400 cc</option>
<option value="1600">1600 cc</option>
<option value="1800">1800 cc</option>
<option value="2000">2000 cc</option>
<option value="2500">2500 cc</option>
<option value="3000">3000 cc</option>
<option value="3500">3500 cc</option>
<option value="4000">4000 cc</option>
</select>
// Jquery //
$('select[name=from]').on('change', function(){
var self = this;
$('select[name=to]').find('option').prop('disabled', function(){
return this.value && this.value < self.value && self.value
});
});
$('select[name=to]').on('change', function(){
var self = this;
$('select[name=from]').find('option').prop('disabled', function(){
return this.value && this.value > self.value && self.value
});
});
我有两个 "from" 和 "to" 下拉列表字段。我只想在选择 "from" 数字时重写 "to" 数字列表数据,其中数字大于 "from" 值数字。并且当 "to" 号码选择重写 "from" 号码列表时相同的后台软件,其中号码小于然后选择 "to" 值。
我正在创建三个事件:
1) 从项目选择事件开始只在第一次工作,其余时间工作不正确
2) 在项目选择事件上只有第一次相同的工作墨水,其余时间工作不正确
3) 从项目清除事件开始重置所有数据列表但工作不正确:仅重置 "to" 数据列表,"from" 数据列表仅清除。
html代码:
<select id="formadditional-age_from" class="form-control"
name="FormAdditional[age_from]">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<select id="formadditional-age_to" class="form-control" name="FormAdditional[age_to]">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
jquery代码:
const select2Conf = {
allowClear: true,
minimumResultsForSearch: -1,
width: 200
},
age_to_item = $('#formadditional-age_to'),
age_from_item = $('#formadditional-age_from'),
age_option_list = $('option', age_from_item).clone();
age_from_item.select2({
...select2Conf,
placeholder: 'From',
});
age_to_item.select2({
...select2Conf,
placeholder: 'To',
});
age_from_item.on('select2:select', function(e){
let data = e.params.data,
val = age_to_item.val();
age_to_item
.html(age_option_list.filter(o => age_option_list[o].value === '' || parseInt(age_option_list[o].value)>=parseInt(data.id)))
.val(val).trigger('change');
});
age_to_item.on('select2:select', function(e){
let data = e.params.data,
val = age_from_item.val();
age_from_item
.html(age_option_list.filter(o => age_option_list[o].value === '' || parseInt(age_option_list[o].value)<=parseInt(data.id)))
.val(val).trigger('change');
});
age_from_item.on('select2:clearing', function(e){
$(this)
.html(age_option_list)
.val("").trigger('change');
age_to_item
.html(age_option_list)
.val("").trigger('change');
});
https://jsfiddle.net/bemulima/18mkrbe2/21/
为什么我的代码无法正常工作?
<select class="form-control" name="from">
<option value="">Choose</option>
<option value="1000">1000 cc</option>
<option value="1200">1200 cc</option>
<option value="1400">1400 cc</option>
<option value="1600">1600 cc</option>
<option value="1800">1800 cc</option>
<option value="2000">2000 cc</option>
<option value="2500">2500 cc</option>
<option value="3000">3000 cc</option>
<option value="3500">3500 cc</option>
<option value="4000">4000 cc</option>
</select>
<select class="form-control" name="to">
<option value="">Choose</option>
<option value="1000">1000 cc</option>
<option value="1200">1200 cc</option>
<option value="1400">1400 cc</option>
<option value="1600">1600 cc</option>
<option value="1800">1800 cc</option>
<option value="2000">2000 cc</option>
<option value="2500">2500 cc</option>
<option value="3000">3000 cc</option>
<option value="3500">3500 cc</option>
<option value="4000">4000 cc</option>
</select>
// Jquery //
$('select[name=from]').on('change', function(){
var self = this;
$('select[name=to]').find('option').prop('disabled', function(){
return this.value && this.value < self.value && self.value
});
});
$('select[name=to]').on('change', function(){
var self = this;
$('select[name=from]').find('option').prop('disabled', function(){
return this.value && this.value > self.value && self.value
});
});