2011-03-31 90 views
2

我有相同的功能,檢查窗體中的2個不同的文本輸入字段。如果選中複選框,則需要在其中一個文本輸入字段上運行該功能。如果未選中複選框,則需要在其他文本輸入字段上運行該功能。根據是否選中複選框更改功能

這裏是複選框:

<input id="use_different_addresses" type="checkbox" value="1" name="use_different_addresses" />Use different address<br /> 

默認情況下,該複選框未選中。未選中時,我需要這個功能來運行:

$('#customer_country_name').change(function() { 
    if ($('#customer_country_name').val() != 'United States') { 
     $('.radio_us').hide(); 
    } 
    else { 
     $('.radio_us').show(); 
    } 
}); 

當複選框被選中,我需要這個功能來運行:

$('#shipping_country_name').change(function() { 
    if ($('#customer_country_name').val() != 'United States') { 
     $('.radio_us').hide(); 
    } 
    else { 
     $('.radio_us').show(); 
    } 
}); 

謝謝!

回答

0

終於得到了它在這裏工作:

http://jsfiddle.net/4UkTP/

這可能不是最漂亮的jQuery(我承認我是一個新手),但它的工作原理! :)

2

爲什麼不只是增加一個檢查,以每種方法的頂部,以確定是否應根據checked狀態

$('#customer_country_name').change(function() { 
    if (!$('#use_different_addresses').is(':checked')) { 
    ... 
    } 
} 

$('#shipping_country_name').change(function() { 
    if ($('#use_different_addresses').is(':checked')) { 
    ... 
    } 
} 

編輯

OP的意見,他們希望澄清運行或不當複選框被選中時,某些無線電信箱將被隱藏。下面是我recomended

$('#use_different_addresses').change(function() { 
    if ($('#use_different_addresses').is(':checked')) { 
    $('.radio_us').hide(); 
    } else { 
    $('.radio_us').show(); 
    } 
}); 
+0

嘿JaredPar,感謝您的意見。我得到你說的話的概念,但由於某種原因,我試圖整合這一點並沒有奏效。我已經把我在這裏所做的代碼:http://jsfiddle.net/flinx777/c2PCT/ ...顯然我做錯了什麼? – flinx777 2011-03-31 16:01:06

+0

@ flinx777你在那個應用程序中期待什麼行爲? – JaredPar 2011-03-31 16:12:44

+0

我正在尋找的行爲是當有人在輸入文本框中更改其國家/地區的值時,如果它不是美國,則會隱藏具有「radio_us」類的標籤。挑戰是我有2個輸入文本字段,用戶可以進入他們的國家。如果沒有選中ID爲「use_different_addresses」的複選框,那麼我的函數應該在ID爲「customer_country_name」的輸入上運行,但是如果複選框被選中,那麼我需要在輸入字段上運行我的函數,其id爲「shipping_country_name」。希望有助於澄清。 – flinx777 2011-03-31 16:22:16

1

沒有看到更多的標記解決方案,你可以使用.toggle()觸發.change()

$("#use_different_addresses").toggle(function(){ 
    $('#customer_country_name').change(); 
}, function(){ 
    $('#shipping_country_name').change(); 
});