枚举下拉列表的事件更改

Posted

技术标签:

【中文标题】枚举下拉列表的事件更改【英文标题】:event change for enumdropdownlist 【发布时间】:2015-12-25 16:20:33 【问题描述】:

在视图中

@html.EnumDropDownListFor(model => model.Field)

型号

public Fields Field  get; set; 

public enum Fields

    First = 1,
    Second

这些是我的标记

<select id="Field" name="Field">
    <option selected="selected" value="1"> First</option>
    <option value="2">Second</option>
</select>

这些脚本不会调用

$('select#Field').change(function () 
    var orderIdd = $('#Field').val();
    alert(orderIdd);
);

【问题讨论】:

那么问题出在哪里? @enigma These scripts dont call :) 控制台出现什么错误? 脚本是包裹在document.ready()还是页面底部。你有jquery-version.js 吗? @Backs 没有错误 【参考方案1】:

尝试以下方法:

在你看来;像这样更改声明:

@Html.EnumDropDownListFor(model => model.Field,"Select..." ,new  @class="fields-select")

并更新您的 javascript 代码如下:

$(document).ready(function()
    $('select.fields-select').change(function () 
        var orderIdd = $(this).val();
        alert(orderIdd);
    );
);

在您的情况下,为 select 生成的 ID 可能与 id="Field" 不同。

【讨论】:

你能不能试着把.change() 代码放在$(document).ready 里面。还可以通过 firebug 或浏览器的检查元素检查生成的 HTML,并查看 idclass 分配给您的枚举选择框的内容。 是的。我试过了。我检查了。身份证正确。在控制台中,我可以调用 $('select#Field')。但我不明白为什么没有出现事件 最后一次尝试:请这样做:new @class="fields-select", @onchange = "onSelectChange(this); 并在新创建的function onSelectChange(obj) 中添加一些警报。检查是否有效。如果是,则将上面的代码移动到这个新函数中。 是的。有用。但为什么这个案子行得通?虽然其他人不是 这真的很奇怪,我也在想为什么其他案例都失败了

以上是关于枚举下拉列表的事件更改的主要内容,如果未能解决你的问题,请参考以下文章

在“方法/事件/枚举下拉菜单”中禁用分类

剑道淘汰赛下拉列表更改事件未触发

在没有确认对话框的情况下取消下拉列表的更改事件

我如何防止剑道下拉列表在角度 4+ 中更改 valueChange 或 selectionChange 事件的值

如果更改事件未绑定然后反弹,则下拉选项“更改”不起作用

如何在不刷新网页的情况下从下拉列表索引更改事件的数据库中检索数据