2011-03-07 60 views
0

我有一個區域,最初是隱藏的,應該根據字段的內容出現/消失。jquery hide只能工作一次

因此,如果用戶選擇通過信用卡付款 - 那麼額外的領域打開,如果沒有 - 然後他們消失。

問題是,它只能用於顯示它們 - 不隱藏。

有人可以請在這裏看到:http://bit.ly/dOCNQQ

提前感謝!

$(function(){ 
    $('#CCinfo').hide();  
    $('#paymethod').change(function(){ 
    var payme = $(this).val(); 
    if (payme=='CreditCard') { 
      $('#CCinfo').show("slow"); 
     } else { 
      $('#CCinfo').hide();  
     } 
    }); 
}); 

<tr> 
<td colspan="2" align="right"> 
    <strong>pay by:</strong><br /> 
    <input type="radio" name="paymethod" id="paymethod" title="*" class="required" value="CreditCard"/>credit card<br /> 
    <tr> 
    <td colspan="2" align="right"><strong>pay by:</strong><br /> 
    <input type="radio" name="paymethod" id="paymethod" title="*" class="required" value="CreditCard"/>credit card<br />&nbsp; 
    <input type="radio" name="paymethod" id="paymethod" title="*" class="required" value="Check"/>cash<br />&nbsp; 
    <input type="radio" name="paymethod" id="paymethod" title="*" class="required" value="At Dinner"/>check 
    </td> 
    </tr> 
    &nbsp; 
    <input type="radio" name="paymethod" id="paymethod" title="*" class="required" value="Check"/>cash<br />&nbsp; 
    <input type="radio" name="paymethod" id="paymethod" title="*" class="required" value="At Dinner"/> check 
</td> 
</tr> 
+1

抱歉,#2是不是平臺「按需調試」。您需要提取您認爲錯誤的代碼,將其發佈到此處,然後有人可以幫助您。通過發佈一個鏈接到一個頁面並要求「調試」,你不會向社區貢獻任何東西,因爲你問的問題不會對除你以外的任何人有任何用處。 – fresskoma 2011-03-07 23:40:40

+0

這很酷,我不介意調試。 – Dimitry 2011-03-07 23:45:22

回答

1

在您的示例中,多個輸入具有相同的ID「paymethod」,然後您可以使用它收聽change事件。在HTML中,元素的id屬性必須是唯一的,當您調用$("#paymethod")時,它只能找到具有此id的第一個輸入。您應該刪除公共ID屬性或創建唯一的屬性。您應該使用name屬性來定位無線電輸入。

因此HTML會是這樣的:

<td align="right" colspan="2"><strong>pay by:</strong><br> 
    <input type="radio" value="CreditCard" class="required" title="*" name="paymethod">credit card<br>&nbsp; 
    <input type="radio" value="Check" class="required" title="*" name="paymethod">cash<br>&nbsp; 
    <input type="radio" value="At Dinner" class="required" title="*" name="paymethod"> check 
</td> 

的JS來獲取無線電要素是:

$("input[name='paymethod']").change(function() { ... }); 
+0

非常好 - 謝謝你們! – kneidels 2011-03-07 23:53:41

1

所有的單選按鈕都有相同的ID。當您選擇$('#paymethod').val()時,您只能得到第一個單選按鈕的值。巧合的是,這總是信用卡。

嘗試:

$('input[name="paymethod"]').click(function (e) { 
    if (e.target.value == 'CreditCard') { 
     $('#CCinfo').show("slow"); 
    } else { 
     $('#CCinfo').stop().hide(); 
    } 
}); 
0

我看看你的代碼。您不能有多個具有相同ID的輸入元素。代碼中發生這種情況的原因是,點擊處理程序僅適用於ID爲paymethod的第一個元素,而不是其他兩個元素。只需爲所有這些類使用一個通用類,然後將該處理程序綁定到該類。