2

当用户从下拉列表“a”中选择不同的选项时,我想要做的是从下拉列表“a”中设置下拉列表“b”中的选定值。

我在 MVC 项目中使用 html 帮助程序“DropDownFor”作为下拉菜单“a”:

<%=Html.DropDownListFor(r => r.FrequencyId, frequencyItems, new {  onchange ="ddMonthChange" })%>

我希望“onchange”事件调用此 JQuery 代码:

$(document).ready(function ddMonthChange () {
var frequency = document.getElementById("FrequencyId").options[document.getElementById("FrequencyId").selectedIndex].value;
alert("frequency is " + frequency);

});

我在与下拉“a”相同的视图中有一个标签,如下所示:

<script type="text/javascript" src="../../Scripts/jquery.setMonthly.js"></script>

所以,显然这是错误的。该脚本确实运行,但仅在加载视图(弹出警报)时运行,并且当我从下拉列表“a”中选择不同的项目时不执行任何操作。

如何连接它以便在选择不同的项目时触发我的脚本?

提前致谢,

4

2 回答 2

1

改变它

$(document).on("change","select[name=FrequencyId]",function(){
     alert("frequency is " + $(this).val());
});
于 2013-06-13T22:43:01.303 回答
0

您需要像这样删除 jQuery 就绪部分:

function ddMonthChange () {
    var frequency = document.getElementById("FrequencyId")
        .options[document.getElementById("FrequencyId").selectedIndex].value;
    alert("frequency is " + frequency);
}

这是因为当 DOM 完成加载时,$(document).ready(...)只需运行您传入的函数(在您的情况下)。ddMonthChange由于您希望您的函数在全局范围内可用,以便下拉列表可以在它更改时调用它,因此您不能将它传递给 jQuery 的 ready 函数

如果您想了解更多关于 Javascript 范围的信息:http: //coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/

于 2013-06-13T22:42:15.717 回答