2013-08-01 89 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();