【问题标题】:array of radio - jquery收音机数组 - jquery
【发布时间】:2011-08-04 03:24:00
【问题描述】:

我有下面的代码,它显示了单选按钮列表 我的问题是我如何制作一个按钮列表,相当于数组模式下的按钮(jquery)

  <input type="radio" name="name1" value="450" /> 450€<br />
  <input type="radio" name="name2" value="500" /> 500€<br />
  <input type="radio" name="name3" value="550" /> 550€<br />
  <input type="radio" name="name4" value="600" /> 600€<br />
  <input type="radio" name="name5" value="650" /> 650€<br />
  <input type="radio" name="name6" value="700" /> 700€<br />

这个简单的创建一个数组而不改变任何东西。还有一个问题,当我在数组模式下拥有这个值时,我将如何访问这些值?

谢谢

【问题讨论】:

  • &lt;li&gt; 元素中不匹配的 &lt;/div&gt; 标签是怎么回事?
  • “不做任何改变”,还是“不做任何改变”?我不只是挑剔你的英语。两者截然相反。
  • 您是否尝试克隆完全相同的输入并将它们附加到另一个元素?
  • 请看我的评论回复-@x10
  • 不,不。它可以是独立的值。我只是发布了我知道在 jquery 中制作元素数组的独特方式,但显然对于这种情况不适用。忽略我的代码,我只想避免 20 行唯一变化是值(400,450,500,550,600 等)

标签: javascript jquery arrays radio-button


【解决方案1】:

另一个 jQuery 解决方案:

Live Demo

<ul>
    <li id="lista"></li>
</ul>

<script type="text/javascript">
$(document).ready(function() {
    var start = 450;
    for (var x=0; x<=20; x++) {
        var item = document.createElement('input');
            $(item).attr('type', 'radio');
            $(item).attr('id', 'price'+x+1);    // numbered starting from 1
            $(item).attr('name', 'price');
            $(item).attr('value', start + (x * 50));
        var label = document.createElement('label');
            $(label).attr('for', 'price'+x+1);  // numbered starting from 1
            $(label).html(start + (x * 50) + '€');
        $('#lista').append(item);
        $('#lista').append(label);
        $('#lista').append('<br>');
    }
});
</script>

【讨论】:

    【解决方案2】:

    希望这将引导您朝着正确的方向前进!我构建了一个简单的函数,创建与您指定的一样多的收音机,并将值增加 50。尝试稍微修改一下以获得您想要的解决方案!

    function populateRadios(){
      var i = 0,
          numberOfRadios = 3,
          baseNumber = 0;
        for(i; i<numberOfRadios; i++){
            var aRadio = document.createElement('input');
            aRadio.type = 'radio'
            aRadio.name = 'radio1';
            aRadio.id = 'radio' + i;
            baseNumber += 50;
            aRadio.value = baseNumber
    
           $('#theForm').append(aRadio)
        } 
    }
    populateRadios()
    

    【讨论】:

      【解决方案3】:

      这将创建 20 个输入并将值和文本增加 50

      var count = 20;
      var increment = 50;
      
      for (y = 0; y < count; y++) {
          var inp = '<input type="radio" name="name1" value="' + increment + '" /> ' + increment + '<br />';
          $(inp).appendTo('#lista');
          increment = increment + 50;
      }
      

      http://jsfiddle.net/fxmmN/1/查看工作示例

      【讨论】:

      • 我在名称属性中有错字,请确保您查看jsfiddle.net/fxmmN/1的更新链接
      • 你可能想使用var y = 0 来避免污染全局变量。
      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 2013-05-29
      • 2011-08-31
      • 1970-01-01
      • 2011-06-04
      • 2013-11-27
      • 1970-01-01
      相关资源
      最近更新 更多