我刚注意到当我的javascript调用$(document).ready(函数....)时,我的MVC Razor HTML帮助器没有呈现(在DOM中)。 因此,当我在文档中放置依赖于DOM对象的代码时,它就找不到DOM对象。
的Javascript
$(document).ready(function () {
$('input:radio,select').change(function () {
DO STUFF...
HTML帮助
@Html.RadioButtonList(m => m.ItemType, new SelectList(Model.ItemTypes, "Name", "Name")
另一个
@Html.DropDownListFor(n => n.ApartmentFloor, new SelectList(Model.ApartmentFloors, "Id", "Floor"), new { @id = "floorsSelect", @class = "exists" })
通常情况下,radiobuttons和下拉列表应该有一个.change函数,但是因为在添加.change时它们还没有渲染,所以它们不会得到那个函数。
有没有办法让“准备好html助手”而不是“准备好文件”?
修改:
人们已经指出,在客户端开始渲染之前,HTML帮助程序在服务器上运行,因此也应该在之前完成。这似乎不是这种情况,因为当我调试JS“on document ready”时,HTML助手对象还没有呈现,但页面的其余部分是。
所以问题仍然存在,是否有办法在HTML辅助对象中添加“on load”函数,或者使用razor语法直接从cshtml文件中添加“change”函数?
答案 0 :(得分:0)
尝试注册这样的事件,
$('input:radio,select').on("change" ,function () { }) ;
希望这会有所帮助。
答案 1 :(得分:0)
我意识到我从未向我的问题发布解决方案。 尽管人们指出HTML助手应该在文档准备好之前呈现,但对我来说似乎并非如此。 所以我所做的是直接在HTML帮助器上添加事件处理程序:
@Html.RadioButtonList(m => m.MyObject, new SelectList(Model.MyObjects, "Name", "Name"), "inputChangeHandler($(this));")
效果很好=)