javascript - ASP.NET MVC : difference between dropdown & textbox onchange event

标签 javascript asp.net-mvc

由于这个事件有些痛苦,我有一些像这样的下拉列表代码:

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/

相关文章:

asp.net-mvc - 无法建立 SSL/TLS 安全通道的信任关系 : The remote certificate is invalid according to the validation procedure

c# - 如何将 “using” 语句添加到 System.Data.Entity 命名空间

c# - Entity Framework 6从存储过程获取复杂的返回值

javascript - 检查第二个字符串是否是另一个字符串的旋转

javascript - 是否有针对 testcafe E2E 测试的建议文件结构

Jquery 对话框部分 View 服务器端验证“保存”按钮单击

asp.net-mvc - asp .net中div中动态数据的分页

javascript - JavaScript 中的构造函数和继承

javascript - JQuery 插件日期选择器无法按照文档正常工作

javascript - javascript和css时序是否同步?