簡體   English   中英

單選按鈕“選擇”切換問題

[英]Radio Button “Select” Toggle issue

我正在嘗試制作一個非常非常簡單的腳本,用於檢查是否單擊了某個單選按鈕選項,如果單擊,則顯示另一組字段(這很好),但是如果您取消選擇該單選按鈕選項,它將隱藏額外的字段集(看似簡單,但對我不起作用!)

另外,我還是JS / JQuery的新手,所以調試這很費勁! 謝謝你的幫助 :)

我的觸發字段顯示的HTML單選按鈕-想象一下,還有其他6個單選按鈕選項(每個選項都以[class =“ otherFund”]進行分類)。

<input type="radio" name="ItemName1" id="Relief1" value="Daughters of Penelope Charitable Relief Fund" onclick="set_item('DOP-Relief-Fund', 8)" onchange="relief_fund_handler()" />

這是文本和字段,我想使用上面的按鈕進行選擇

<p id="Earmark1" style="display: none;">
   <strong>Please designate below what relief fund you would like your <em>DOP Charitable Relief</em> donation to go towards (see bulleted examples above).</strong><br />
   <strong>Earmarked for <span class="required">*</span>:</strong><input type="text" name="Earmark1" id="Earmark1" size="50" />
</p>

這是我的JS嘗試...

嘗試1:

function relief_fund_handler() {

   var relief_elem = document.getElementById("Relief1"),
       earmark_elem = document.getElementById("Earmark1"),
       donate_elem = document.getElementById("ItemName1");

   if (relief_elem.checked) {
       earmark_elem.setAttribute("style", "display: inline;");    
   } else if (".otherFund".checked) {          
       earmark_elem.setAttribute("style", "display: none;");
   }
}

嘗試2:

function relief_fund_handler() {

   var relief_elem = document.getElementById("Relief1"),
       earmark_elem = document.getElementById("Earmark1"),
       donate_elem = document.getElementById("ItemName1");

   if (relief_elem.checked) {  
       earmark_elem.setAttribute("style", "display: inline;");    
   } else {
       earmark_elem.setAttribute("style", "display: none;"); 
   }
}

嘗試3:

$("#Relief1:checked")( 
    function() { 
       $('#Earmark1').toggle();
    } 
);

在嘗試#3,我也換成了:checked.click.select.change ,沒有工作過......感謝您的幫助! :)

嘗試這個:

$("input.otherFund").change(function() {
    $('#Earmark1').toggle($(this).attr('id') == 'Relief1');
});​

嘗試像這樣從單選按鈕中刪除所有事件:

<input type="radio" name="ItemName1" id="Relief1" value="Daughters of Penelope Charitable Relief Fund" />

並使用以下jquery腳本:

​$(function(){
    $("#Relief1").change(function(){
        $(this).is(":checked") ? $("#Earmark1").show() : $("#Earmark1").hide();
    });
});​

您可以遍歷每個單選按鈕,並為每個單選按鈕分配一個事件處理程序,因此在選中時顯示其他字段,而在取消選中時隱藏其他字段。 以下代碼可以幫助您獲得正確的答案。

// Iterate the radio buttons and assign an event listener

$('input[name="ItemName1"]').each( function() {

    // Click Handler

    $(this).live('click', function() {

        // Check for selected

        if ( $(this).is(':checked') )
        {
            $('#EarMark1').show();
        }
        else 
        {
            $('#EarMark1').hide();
        }
    });

});

它不是完美的,也不是最優雅的解決方案。 通過一些調整,它可以為您指明正確的方向。

謝謝大家!!! 我最后使用了肯尼普(Kennypu)的示例-即使是單選按鈕,“:checked”似乎也可以正常工作。 我必須對其進行一些調整,最后得到2個單獨的函數,而不是“ else”。 由於某些原因,其他示例對我不起作用-盡管我非常懷疑這與您的代碼有關,並且可能與頁面中發生的其他事情有關。 由於我們使用的是外部表單/數據庫處理程序,因此我們需要將事件和其他代碼保留在那里。

這就是最終的結果。

    $(function(){
    $("#Relief1").change(function(){
    if($(this).is(":checked")) {
      $("#Earmark1").show();
      }
      });
    });

  $(function(){
    $("#Radio1, #Radio2, #Radio3, #Radio4, #Radio5, #Radio6, #Radio7").change(function(){
    if($(this).is(":checked")) {
      $("#Earmark1").hide();
      }
      });
    });

相當笨拙,但是我可以按需使用它。 感謝所有貢獻者,它提供了很多幫助。

嘗試:

<script>
var r=$('input[name="ItemName1"]).is(:checked);
if(r)
{
alert("Item is checked");//replace with any code
}
</script>

如果你已經使用jQuery,這是簡單的使用.show().hide()

$('#Relief1').on('change',function() {
  if($(this).is(':checked')) {
    $('#Earmark1').show();
  } else {
    $('#Earmark1').hide();
  }
});

小提琴示例: http : //jsfiddle.net/x4meB/

還要注意,不要使用重復的ID,因為它們的唯一性(在這種情況下,p標簽和跨度必須為#Earmark1 )。 另外,在示例小提琴中,我將其更改為復選框而不是單選按鈕,因為如果只有一個選項,則無法取消選中單選按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM