2014-03-12 55 views
1

我有2個單獨的字段,每個單選按鈕都有4個單選按鈕。如何通過檢查另一個單選按鈕來設置選中的單選按鈕

字段nr1的單選按鈕未選中通過使用jquery,字段nr2默認情況下選中第一個單選按鈕。

我需要的是,如果在字段nr1中選中了一個單選按鈕,那麼它會檢查字段nr2中的相同單選按鈕。

這裏是我的HTML看起來像:

<p class="form-row form-row-wide validate-required" id="billing_piegadatajs_field"><label for="billing_piegadatajs" class="">Piegādes veids <abbr class="required" title="vajadzīgs">*</abbr></label><br> 

<input type="radio" name="billing_piegadatajs" value="Pasta Stacija" class="radio" style="width:10%" checked="checked"><span for="billing_piegadatajs">Pasta Stacija</span><br> 
<input type="radio" name="billing_piegadatajs" value="Post24" class="radio" style="width:10%"><span for="billing_piegadatajs">Post 24</span><br> 
<input type="radio" name="billing_piegadatajs" value="Kurjerdienests" class="radio" style="width:10%"><span for="billing_piegadatajs">Kurjerdienests</span><br> 
<input type="radio" name="billing_piegadatajs" value="Saņemt uz vietas" class="radio" style="width:10%"><span for="billing_piegadatajs">Saņemt uz vietas (Saldū)</span> 
</p> 

<br>   

<tr class="shipping"> 
<th>Piegādes izmaksas</th> 
<td> 
    <ul id="shipping_method"> 
     <li> 
      <input type="radio" name="shipping_method[0]" data-index="0" id="shipping_method_0_flat_rate" value="flat_rate" checked="checked" class="shipping_method"> 
      <label for="shipping_method_0_flat_rate">Pasta Stacijas: <span class="amount">€&nbsp;3.50</span></label> 
     </li> 
     <li> 
      <input type="radio" name="shipping_method[0]" data-index="0" id="shipping_method_0_international_delivery" value="international_delivery" class="shipping_method"> 
      <label for="shipping_method_0_international_delivery">Post 24: <span class="amount">€&nbsp;3.50</span></label> 
     </li> 
     <li> 
      <input type="radio" name="shipping_method[0]" data-index="0" id="shipping_method_0_apg_shipping" value="apg_shipping" class="shipping_method"> 
      <label for="shipping_method_0_apg_shipping">DLW Kurjeris: <span class="amount">€&nbsp;9.00</span></label> 
     </li> 
     <li> 
      <input type="radio" name="shipping_method[0]" data-index="0" id="shipping_method_0_local_pickup" value="local_pickup" class="shipping_method"> 
      <label for="shipping_method_0_local_pickup">Uz vietas - Saldū (Bez maksas)</label> 
     </li> 
    </ul> 



</td> 
</tr> 

我使用這個jQuery是加載頁面時取消外地NR1單選按鈕。

jQuery(document).ready(function(){ 
jQuery('#billing_piegadatajs_field') 
jQuery('#billing_piegadatajs_field').find('input[name="billing_piegadatajs"]').each(function() { 
jQuery(this).prop('checked', false); 
}); 
}); 

這裏是一個jsfiddle

+0

你需要給不同的名稱爲每個複選框收音機和使用jquery來檢查它們 – Mazeltov

+0

什麼是這種HTML標記???請使用有效的HTML標記 –

+0

這是Wordpress/wooCommerce使用的。我自己並沒有製作這個標記。 字段nr1是使用自定義字段插件創建的,字段nr2是用於選擇運輸方式的標準wooCommerce結賬字段。 – Valdis

回答

1

一個鏈接,您可以在很多很多方面

一種方法,應考慮2套廣播

的達致這你有2臺已經:

第一個共享類名'收音機'

第二個共享的類名稱「SHIPPING_METHOD」

邏輯

1)第一組

2的所有無線電添加click事件)獲取一個我們點擊的順序排名具有在所述第二組

// Track the click on the first set of radio 
jQuery('.radio').on('click',function(){ 

    // Get the element index , which one we click on 
    var indx = jQuery(this).index('.radio'); 

    // Trigger a click on the same index in the second radio set 

    jQuery('.shipping_method')[indx].click(); 
}) 

有相同索引

3)迫使上的單選按鈕的點擊事件是的jsfiddle:http://jsfiddle.net/MMJRk/21/

+0

您的先生是一個拯救生命。我不知道爲什麼我第一次粘貼你的代碼不起作用,但是在重新粘貼之後,並不是所有的東西都可以工作!萬分感謝 ! – Valdis

+0

我的解決方案強制您在第一組和第二組之間具有相同的點擊關係順序。如果你想要更多的靈活性,我建議你回答@OscarPaz的回答,以及下面的評論。祝你今天愉快! –

0

嗯,我不得不承認這是沒有得到你想要的最理想的方式。但它確實的伎倆:http://jsfiddle.net/veritas87/MMJRk/25/

jQuery('p.form-row input[type=radio]').on('change', function() { 
     var radioNumber = $(this).index('.radio'); 
     $("ul#shipping_method input[type=radio]:eq(" + radioNumber + ")").prop('checked', true); 
    }); 

總之,當在p.form行一個單選按鈕的變化,將獲得點擊的單選按鈕的索引,它會設置單選按鈕的第二列表中的單選按鈕來檢查。

+0

由於某種原因,您的代碼在我的網站上無法使用。它在jsfiddle中工作,但是當我將它粘貼到我的網站上時,它沒有。 弗雷德裏克Nault腳本工作。但是,你非常感謝你的幫助,我真的很感激。 – Valdis

0

我已更新您的jsfiddle,現在它可以正常工作。

基本上,我分配給每個輸入(和其對應物),一個使用索引自定義數據屬性(data-index)。我連着一個事件處理程序的第一組輸入,並根據檢查的一個指數,我檢查第二組中的正確的單選按鈕:

$('#billing_piegadatajs_field input[type="radio"]').on('change', function() { 
    if (!this.checked) return; 
    var index = this.getAttribute('data-index'); 
    $('#shipping_method input[data-index="' + index + '"]').prop('checked', true); 
}); 
+0

爲什麼在jquery可以找到索引時添加數據索引? –

+0

那麼,對於初學者來說,它更快,因爲你立即知道單選按鈕的索引。其次,這種方式你不依賴於他們的順序。如果你想以不同的方式安排第二組中的radibutton,該怎麼辦?此外,按照我的方式,將一對一關係更改爲一對多(如果您更改複選框的單選按鈕)很容易。 –

+0

偉大的答案,你的方式給予優勢,我完全同意這些好處。我猜想額外的數據索引使它更加靈活。謝謝 –

相關問題