从输入(无线电)中获取值并将它们打印出来......使用jQuery

时间:2011-05-14 20:10:41

标签: javascript jquery html

<script language="javascript" type="text/javascript">

    $('#leftDiv').ready(function(){

        $("form").submit(function () {
            //data structure
            var radios = [];
            //for printing purposes
            var arrayValues = $("#arrayVal");

            //Getting the values
            $("form :radio:checked").each(function() {
                radios = $(this).attr('value');
            });

            //Printing the values
            $.each(radios, function( index, value ){
                arrayValues.append(
                    $(value)
                );
            });
        })
    });
</script>

HTML“CODE”

<html>
<body>
<div id="leftDiv" class="container"> 
<form action="" method="get"> 
    <fieldset>
        <p>Something 0</p>

        <lable>Yes</label>
        <input type="radio" name="Group0" value="1" >

        <lable>No</label>
        <input type="radio" name="Group0" value="0" >

    </fieldset>

    <fieldset>
        <p>Something 1</p>

        <lable>Yes</label>
        <input type="radio" name="Group1" value="1" >

        <lable>No</label>
        <input type="radio" name="Group1" value="0" >

    </fieldset>

    <fieldset>
        <p>Something 2</p>

        <lable>Yes</label>
        <input type="radio" name="Group2" value="1" >

        <lable>No</label>
        <input type="radio" name="Group2" value="0" >

    </fieldset>

    <fieldset>  
        <input type="submit" name="update" class="button" value="Submit"> 
    </fieldset>
</form>
</div>
</body>
</html>

不知道为什么但只能从广播组中获取最后一个值。 我做错了什么?

6 个答案:

答案 0 :(得分:3)

而不是

radios = $(this).attr('value');

radios.push($(this).attr('value'));

答案 1 :(得分:3)

$("form :radio:checked").each(function(i) {
    radios[i] = $(this).val();
});

获取值而不是属性。

答案 2 :(得分:1)

我认为这应该是:

  //Getting the values
  $("form :radio:checked").each(function() {
      radios.push($(this).attr('value'));
  });

答案 3 :(得分:0)

当你获得这些值时,你就有了这一行JS:

radios = $(this).attr('value');

肯定你的意思是radios[radios.length]?这有帮助吗?

答案 4 :(得分:0)

 $("form :radio:checked").each(function() {
                radios = $(this).attr('value');
            });

每次迭代都会覆盖无线电中的值。这就是为什么一旦循环存在,你只有最后一次迭代的值。

答案 5 :(得分:0)

我想每次你在$(“form:radio:checked”)。每个()函数中你都会覆盖无线电的价值而不是添加它。

你有这个:

// Getting the values
$("form :radio:checked").each(function() {
  radios = $(this).attr('value');
});

......而不是:

// Getting the values
$("form :radio:checked").each(function(i, e) {
  radios[i] = $(e).attr('value');
});

...所以当循环结束时,你只剩下最终值。