由于这个事件有些痛苦,我有一些像这样的下拉列表代码:
return helper.DropDownList(data.ModelEntityId.ToString(), selectList, "<Select>", new { onChange = onChange });
其中 onChange 是一个包含要运行的 javascript 函数的变量,这非常有效。然而,对于文本框版本(如下),页面加载时会触发 onchange 事件(与 DropdownList 不同,不同的行为很烦人)。当页面加载时调用 javascript 函数时,出现错误:无法找到 Javascript“未定义”...(随后即可运行)
return helper.TextBox(data.ModelEntity.ModelEntityId.ToString(), data.ValueText, new { onchange = onChange });
示例 JavaScript
function SuitabilityChecked(providerId, checkId, parentId) {
alert("meep"); // just to test error still occurs
};
我应该为文本框使用不同的事件,或者“我需要做的特殊事情吗?”
最佳答案
您可以通过在页面加载完成后不显眼地(非内联)应用处理程序来完全避免此问题。在 MVC 中执行此操作的标准方法是使用 jQuery。
<script type="text/javascript">
$(function() {
$('input#<%= data.ModelEntity.ModelEntityId %>').change( function() {
...
});
});
</script>
如果需要,使用类可以更轻松地将处理程序仅应用于某些元素 - 只需将类定义添加到帮助程序中的 htmlAttributes 哈希中,然后更改已加载处理程序中的选择器以将更改处理程序仅应用于具有所选类的那些元素。
关于javascript - ASP.NET MVC : difference between dropdown & textbox onchange event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2189269/