对于这个事件有些痛苦,我有一些这样的代码用于下拉列表:
return helper.DropDownList(data.ModelEntityId.ToString(), selectList, "<Select>", new { onChange = onChange });
其中onChange是一个包含要运行的javascript函数的变量,这很有用。但是对于文本框版本(如下),当页面加载时会触发onchange事件(与DropdownList不同,不同的行为很烦人)。当页面加载时调用javascript函数时,我收到错误:无法找到Javascript“undefined”... (然后它会工作)
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
};
我应该在文本框中使用不同的事件,还是“我需要做些什么?”
答案 0 :(得分:4)
您可以完全避免此问题,方法是在页面加载完成后不显眼地(不是内联)应用处理程序。在MVC中执行此操作的标准方法是使用jQuery。
<script type="text/javascript">
$(function() {
$('input#<%= data.ModelEntity.ModelEntityId %>').change( function() {
...
});
});
</script>
如果需要,使用类可以更容易地将处理程序应用于某些元素 - 只需将类定义添加到帮助程序中的htmlAttributes哈希,并更改onloaded处理程序中的选择器以仅将更改处理程序应用于具有所选类的那些元素。