2012-01-27 25 views
2

當Razor視圖發送到瀏覽器時,以下標記生成類型複選框的輸入,其中id="IsRecurring"添加客戶端複選框點擊處理器到剃刀視圖

<div class="editor-label"> 
    @Html.LabelFor(model => model.IsRecurring) 
</div> 

<div class="editor-field"> 
    @{ 
     @Html.EditorFor(model => model.IsRecurring) 
    } 
</div> 

我需要顯示/隱藏其他標記塊,根據複選框的選中狀態。

哪種方法是最適合MVC3的方法?

我的計劃是去與添加的div上面下面的腳本:

<script type="text/javascript"> 
    $("#IsRecurring").click(function() { 
     do show hide; 
    }); 
</script> 

凡在我看來標記的適當位置,以放置腳本?有沒有更好的方法,我可以參考IsReccuring複選框,而不是知道它會提前有什麼ID?

回答

2

隱藏/顯示是怎樣一個行爲,我會用腳本,在複選框添加類:

@Html.CheckBoxFor(model => model.IsRecurring, new {@class "recurring"}) 


//event 
$(".recurring input:checkbox").click(function() { 
        //hide/show 
       }); 
+1

由於Razor引擎將checkbx綁定到模型,因此不需要使用新類,從而將IsRecurring的id賦給複選框 – korzeniow 2012-01-27 10:32:18

+0

事件處理邏輯在視圖中出現在哪裏?它甚至米嗎?我將如何通過ID引用元素。我沒有一類複選框,因此在我的情況下使用了一個錯誤的類。 – 2012-01-27 11:27:36

3

你可以嘗試這樣的:

@Html.CheckBoxFor(model => model.IsRecurring, new {onchange = "checkedChanged"}) 

//JS 
var checkedChanged = function() { 
    alert("checkedChanged"); 
} 
+1

比IE9更老的IE不識別onchange事件AFAIK – korzeniow 2012-01-27 10:32:06

+0

正如我所提到的,我願意使用一種不顯眼的方法將客戶端腳本邏輯從文檔模型中分離出來。另外,我的問題包括「JS應該在哪裏看到」? – 2012-01-27 11:26:15

+1

這對我們有效。馬克西姆,我們把我們的JavaScript放在一個與腳本標籤鏈接的外部.js文件中。 – 2014-06-05 18:32:58

0

你還可以嘗試:

$('#checkboxId').click(function() { 
    //add code here 
    }); 
相關問題