2

我刚刚注意到,当我的 javascript 调用 $(document).ready(function....找到 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" })

通常,单选按钮和下拉菜单应该获得 .change 功能,但由于在添加 .change 时它们还没有呈现,所以它们没有获得该功能。

有没有办法让“准备好 html 助手”而不是“准备好文档”?

编辑

人们已经指出 HTML 助手在客户端开始渲染之前运行在服务器上,因此也应该在之前完成。情况似乎并非如此,因为当我“在准备好文档时”调试 JS 时,HTML 帮助器对象尚未呈现,但页面的其余部分已呈现。

所以问题仍然存在,有没有办法在 HTML 帮助器对象中添加“加载”函数,或者直接从具有剃刀语法的 cshtml 文件添加“更改”函数?

4

2 回答 2

0

尝试像这样注册活动,

      $('input:radio,select').on("change" ,function () { }) ;

希望这会有所帮助。

于 2012-10-17T08:32:57.360 回答
0

我意识到我从未发布过我的问题的解决方案。尽管人们指出应该在文档准备好之前渲染 HTML 助手,但对我来说似乎并非如此。所以我所做的是直接在 HTML 帮助器上添加事件处理程序:

@Html.RadioButtonList(m => m.MyObject, new SelectList(Model.MyObjects, "Name", "Name"), "inputChangeHandler($(this));")

效果很好 =)

于 2013-02-15T09:58:09.400 回答