我有select
看起来像这样:
<select id="address">
<option noodd="1-9" noeven="2-6">Address Name 1</option>
<option noodd="3-5" noeven="2-10">Address Name 2</option>
<option noodd="3-11" noeven="1-5">Address Name 3</option>
</select>
<select id="housenumber">
</select>
每当选择#address
中的一个选项时,我需要#housenumber
填充所选地址范围内的数字。因此,当选择Address Name 1
时,我需要#housenumber
看起来像这样:
<select id="housenumber">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>9</option>
</select>
有没有人明白如何做到这一点?
更新,我需要的是:
noeven
在option
中指定的数字之间的所有相等数字。noodd
在option
中指定的数字之间的所有奇数。option
元素option
#housenumber
中的option
时,将这些#address
元素附加到{{1}}的函数答案 0 :(得分:2)
这样的事情应该这样做:
$('#address').change(function(){
var $selected = $('option:selected',this);
var odd = $selected.attr('noodd').split('-');
var even = $selected.attr('noeven').split('-');
var arr = [];
for(var o = parseInt(odd[0],10);o<=parseInt(odd[1],10);o+=2){
arr.push(o);
}
for(var e = parseInt(even[0],10);e<=parseInt(even[1],10);e+=2){
arr.push(e);
}
var $housenumber = $('#housenumber');
$housenumber.empty();
$.each(arr.sort(function(a,b){return a-b;}),function(i,e){
$housenumber.append($('<option/>').text(e));
});
});
几点说明:
您应该使用data-*
属性而不是自定义属性。使您的选项节点看起来像<option data-odd="1-9" data-even="2-6">Address Name 1</option>
,使其阅读更安全,例如var odd = $selected.data('odd').split('-');
你的第三个元素的偶数是奇数,给出了一些奇怪的结果。假设这只是发布问题的错误?