2013-08-01 53 views
0

我试图通过ajax传递值(单选按钮)。发送的值错误。我有4个收音机,但窗体不断发送第一个值(== 1)。请你们给我一些建议。为什么发生?无法通过jquery发送无线电真实值ajax

这里是我的代码:

<ul class="nav nav-list"> 
<li><label for="1"><input type="radio" name="vote" id="1" class="choice" value="1">&nbsp;Choice 1</label></li> 
<li><label for="2"><input type="radio" name="vote" id="2" class="choice" value="2">&nbsp;Choice 2</label></li> 
<li><label for="3"><input type="radio" name="vote" id="3" class="choice" value="3">&nbsp;Choice 3</label></li> 
<li><label for="4"><input type="radio" name="vote" id="4" class="choice" value="4">&nbsp;Choice 4</label></li> 
    <li class="divider"></li> 
    <li>   
     <div id="vote_loading" style="display:none">loading...</div> 
     <div id="vote_result"></div><button class="btn btn-small btn-success" type="button" onClick = "voting()"><i class="icon icon-thumbs-up icon-white"></i>&nbsp;Vote</button> 
    </li> 
</ul> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script> 
    //voting 
    function voting(){ 
     var choice = $('.choice').val(); 
     $.ajax({ 
      type: "POST", 
      url: "inc/vote_chk.php", 
      data: {choice:choice} 
      }).done(function(result){ 
      $("#vote_loading").slideUp("slow"); 
      $("#vote_result").html(result).slideDown("slow"); 
     }); 
    } 
    </script> 

通过我用引导的方式。但这与代码无关。

Regards,

+0

jsfiddle? (没有ajax调用) –

+0

这将帮助您开始:http://stackoverflow.com/questions/3464075/get-value-of-radio-button-group – BjornJohnson

回答

2

因为您使用一个返回多个值的类,它只返回其中的一个。要获得选择:

变化

var choice = $('.choice').val(); 

var choice = $('.choice:checked').val(); 

我最初以为是:选择获得所选择的无线电,但对于选择选项多数民众赞成。结合其他答案不要混淆人。 :checked用于单选按钮。

应该注意的是,尽管这对您来说很重要,但是在技术上更快地引用类而不是元素的属性。

+0

公鸡,您的解决方案工作。日Thnx。 – Wilf

0

你试过了吗?

$('input[name=vote]').val() 
2

试试这个:

var choice = $('input[name=vote]:checked').val(); 
+0

ahhh。好的电话。我一会儿没有用过单选按钮。 :checked是正确的伪选择器thingy,not:selected。对于单选按钮。 – Rooster

1

您正在试图获得的价值时,你应该检索输入的价值。这是因为很多元素可以共享一个类(即使非单选按钮也可以拥有类choice),但只有一个元素可以具有相同的名称。

var choice = $('input[name="vote"]').val();