在JQUERY中如何設定包在Lable內Radio的Click事件
今天碰到一個需求,我要在RadioButton點選之後,在前端的JS做一些狀態處理,
根據以前的經驗,這個需求非常簡單,只要加上onclick事件就解決了,
但是我的RadioButton跟Label室友關聯性的,點選Label顯示文字的時候,
RadioButton也要勾選,Razor產生的語法如下:
<div class="col-md-10">
	<div class="radio-inline">
		@Html.RadioButtonFor(c => c.condition.RESET_TYPE, "F", new { id = Html.IdFor(c => c.condition.RESET_TYPE) + "_FORGET", style = "cursor:pointer;" })
		@Html.Label(Html.IdFor(c => c.condition.RESET_TYPE) + "_FORGET", "顯示文字1", new { @class = "", style = "cursor:pointer;"})
	</div>
	<div class="radio-inline">
		@Html.RadioButtonFor(c => c.condition.RESET_TYPE, "S", new { id = Html.IdFor(c => c.condition.RESET_TYPE) + "_SIX", style = "cursor:pointer;" })
		@Html.Label(Html.IdFor(c => c.condition.RESET_TYPE) + "_SIX", "顯示文字2", new { @class = " ", style = "cursor:pointer;" })
	</div>
	<div class="radio-inline">
		@Html.RadioButtonFor(c => c.condition.RESET_TYPE, "O", new { id = Html.IdFor(c => c.condition.RESET_TYPE) + "_OTHER", style = "cursor:pointer;" })
		@Html.Label(Html.IdFor(c => c.condition.RESET_TYPE) + "_OTHER", "顯示文字3", new { @class = " ", style = "cursor:pointer;"})
	</div>
</div>
再點選顯示文字的時候,RadioButton 要勾選/取消,那Click事件要加在哪裡呢?
我測試了三種方式
1.<div class="radio-inline">
2.只加在Label
3.RadioButton跟Label都加上去
第一種加法,點選Lable顯示文字的時候,Click事件會被觸發兩次
第二種加法,點選RadioButton的時候不會觸發事件
第三種加法,點選Lable顯示文字的時候,Click事件會被觸發兩次
最後解決方法,改用JS去初始化
$(function () {
    $('input:radio[name="condition.RESET_TYPE"]').change(
    function () {
        if ($(this).is(':checked') && $(this).val() == 'O') {
            //可以根據判斷的值去分析 要做什麼事情
        }
        else {
            //Other Things
        }
    });
});
這樣不管是點選RadioButton OR Label,都會只觸發一次Click事件。