首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >添加数字范围以选择选项

添加数字范围以选择选项
EN

Stack Overflow用户
提问于 2012-11-12 12:13:19
回答 1查看 1.2K关注 0票数 0

我有一个select,看起来像这样:

代码语言:javascript
运行
复制
<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看起来如下所示:

代码语言:javascript
运行
复制
<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中的函数
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-12 12:43:27

像这样的事情应该可以做到:

代码语言:javascript
运行
复制
$('#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/

几个注意事项:

  1. 您应该使用data-*属性,而不是自定义属性。使您的选项节点看起来像<option data-odd="1-9" data-even="2-6">Address Name 1</option>,从而使读取它们更安全(如var odd = $selected.data('odd').split('-'); )
  2. 第三个元素有偶数的奇数,给出了一些奇怪的结果。假设这只是安错误发布的问题?
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13343526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档