2014-01-18 60 views
1

我有以下的HTML代碼:jQuery的.VAL()不爲單選按鈕的工作

<form id="attorneyRegisterForm"> 
    <div class="captchaIcons"> 
     <label class="yourAgeLabel" for="rdo_1"> 
      <input 
       type="radio" 
       class="yourAgeRadio" 
       id="rdo_1" 
       name="attorneyRegister_age" 
       value="43b5b5755010e47acf5d549de05a205d" 
       title="Moon" 
      /> 
      <i class="icon-moon ageIcons" title="Moon"></i> 
     </label> 
     ... 
     <label class="yourAgeLabel" for="rdo_X"> 
      <input 
       type="radio" 
       class="yourAgeRadio" 
       id="rdo_X" 
       name="attorneyRegister_age" 
       value="c56f8bd55a15392e1039461c8006385c" 
       title="Flag" 
      /> 
      <i class="icon-flag ageIcons" title="Flag"></i> 
     </label> 
    </div> 
    <a href="#" id="registerAttorneyButton" class="button primary tiny"> 
     <?php 
      _e('Register', 'z'); 
     ?> 
    </a> 
</form> 

,在我的JavaScript文件我有以下代碼:

var $attorneyRegisterForm  = $('#attorneyRegisterForm'); 
var $attorneySubmitForm   = $('a#registerAttorneyButton'); 
var $attorneyNonce    = $('#attorneyNonce'); 
var $attorneyFirstName   = $('#attorney_first_name'); 
var $attorneyLastName   = $('#attorney_last_name'); 
var $attorneyEmail    = $('#attorney_email'); 
var $attorneyPassword   = $('#attorney_password'); 
var $attorneyPasswordConfirm = $('#attorney_password_confirm'); 
var $yourAgeRadio    = $('#attorneyRegisterForm input[type="radio"]'); 

if($attorneyRegisterForm.length > 0) 
{ 
    $attorneyRegisterForm.on(
     'submit.attorney', 
     function(e) 
     { 
      $data = { 
       fName : $attorneyFirstName.val(), 
       lName : $attorneyLastName.val(), 
       email : $attorneyEmail.val(), 
       pass : $attorneyPassword.val(), 
       passC : $attorneyPasswordConfirm.val(), 
       age  : $yourAgeRadio.val(), 
       s  : $attorneyNonce.val() 
      }; 

      console.log($data); 

      e.preventDefault(); 
     } 
    ); 

    $attorneySubmitForm.on(
     'click', 
     function(e) 
     { 
      $attorneyRegisterForm.submit(); 
      e.preventDefault(); 
     } 
    ); 
} 

現在的問題當我從HTML表單中選擇radio時,jQuery總是返回第一個radion值,而不是所選的值。

我的javascript錯了嗎?或者我應該嘗試另一種方法來檢索單選按鈕?

+0

使用':checked'選項來獲得所選擇的單選按鈕 –

回答

2

您需要使用:checked選擇

$('#attorneyRegisterForm input[type="radio"][name="attorneyRegister_age"]:checked') 
+1

您將以這種方式創建錯誤,因爲您沒有在您的名稱屬性選擇器上使用雙引號或轉義單引號。您應該使名稱選擇符爲'[name =「attorneyRegister_age」]或'[name = \'attorneyRegister_age \']''。 – Joeytje50

2

您可以使用下面的jQuery來獲得所選擇的單選按鈕的名稱組

$("input[name='attorneyRegister_age']:checked").val(); 
1

在jQuery選擇試試這個,新增:checked

$('.yourAgeRadio:checked').val(); 
+0

選擇器開頭的#attorneyRegisterForm已經是一個矯枉過正的事情了。此外,您的選擇器將選擇所有單選按鈕。我的選擇器只會從attorneyRegister_age名稱組中選擇單選按鈕。 –

1

刪除輸入類型rad的id io在JS中。更改

$yourAgeRadio    = $('#attorneyRegisterForm input[type="radio"]'); 

$yourAgeRadio   = $('input[type="radio"]:checked'); 

樣品

$(document).on('change','input[type="radio"]',function(){ 
    var $yourAgeRadio = $('input[type="radio"]:checked'); 
    alert($yourAgeRadio.val()); 
}); 

JSFIDDLE DEMO