2017-03-08 89 views
0

所以我正在構建一個接口,根據選中的複選框將事件添加到日曆。目前,我可以得到觸發事件,像這樣:Asp.net MVC 5,Html.Checkbox上點擊事件不起作用

@Html.CheckBox("Mon1D", new { htmlAttributes = new { @class = "form-control" } }) 

而且JS:

$('#Mon1D').click(function() { 
       //some code 
    }); 

大吧?錯誤。如果我採用這種方法,那麼我必須爲所有42個複選框創建(幾乎)相同的功能。我寧願做一個適合所有功能的處理onclick事件的複選框。雖然我有點兒喜歡JavaScript,所以我無法弄清楚爲什麼我的onclick沒有觸發。

的onclick是這樣的:

 $myFunction(function() { 
      //some code 
    }); 

而且複選框

@Html.CheckBox("Mon1D", new { htmlAttributes = new { @onclick = "myFunction()", @class = "form-control" } }) 
+0

你有多個複選框嗎?如果你使用'@ Html.CheckBox(「Mon1D」,...)',那麼你的生成重複的'id'屬性是無效的html。點擊(函數(){if($(this).is(':checked')){...' –

+0

他們都有不同的ID。Mon1D ,Mon1E,Mon1N,Tue1D ...等 –

+0

那就好了,但只需使用類名作爲選擇器 - 「@ Html.CheckBox(」Mon1D「,new {@class =」form-control check-box「} )' –

回答

0

解決了我的問題:'onclick'沒有開火,因爲它是'htmlattributes'類的內部。它需要被匿名定義。像這樣:

@Html.CheckBox("someID", new { @onclick = "myFunction();", htmlAttributes = new { @class = "form-control" } }) 

編輯:添加上面的代碼的HTML結果。

<input htmlAttributes="{ class = form-control }" id="someID" name="someID" onclick="myFunction();" type="checkbox" value="true" /> 
+0

什麼?你檢查了生成的html - 它不可能正常工作,並且肯定不會爲你的元素添加'class =「form-control」'(但它會添加一個無效的'htmlAttributes = new {@class =「form-control」 }'屬性 –

+0

並停止污染你的行爲標誌 - 它的21世紀 - 使用[Unobtrusive JavaScript](https://en.wikipedia.org/wiki/Unobtrusive_JavaScript) –

+0

它的工作。謝謝你對我的JS ,但我不是前端開發人員,這是我的應用程序需要做的前端事情。 如果我最終有更多前端功能的東西,我一定會考慮你的建議。 –

0

如果我採取這種方法,我不得不做出一個(幾乎)相同的功能,爲所有42複選框。

採取不同的方法。 jQuery有另一個選擇器,其允許通過類這樣選擇:

$('.form-control').click(function (event) { 
    // to get the element that fired the event 
    alert(event.target.id); 
    // or you can use the 'this' variable like below 
    var $element = $(this); 
    // And then you can get any attribute of the element like this 
    var id = $element.attr('id'); 
    var someOtherAttribute = $element.attr('whateverYouNeed'); 
}); 

this指觸發事件的元件。使用$(this)會將其封裝爲jQuery對象,然後您可以使用所有jQuery可用調用。

任何具有form-control類別的元素,其click事件都將被截取。

+0

@scubasteve做了這個幫助,或者你仍然有困難? – CodingYoshi

+0

剛坐下來工作,我會編碼並讓你知道。 –

+0

如果我想通過一個點擊的價值,我會怎麼做呢? –