我有一个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
中的对应option
时,将这些option
元素附加到#address
中的函数发布于 2012-11-12 12:43:27
像这样的事情应该可以做到:
$('#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));
});
});
实例:http://jsfiddle.net/uhwMS/
几个注意事项:
data-*
属性,而不是自定义属性。使您的选项节点看起来像<option data-odd="1-9" data-even="2-6">Address Name 1</option>
,从而使读取它们更安全(如var odd = $selected.data('odd').split('-');
)https://stackoverflow.com/questions/13343526
复制相似问题