Mar*_*man 5 html javascript asp.net-mvc
我有一个带有选择列表的页面(ASP.NET MVC页面)
选择列表和onchange事件指定如下:
<%=Html.DropDownList("CompanyID", Model.CompanySelectList, "(select company)", new { @class = "data-entry-field", @onchange = "companySelectListChanged()" })%>
Run Code Online (Sandbox Code Playgroud)
companySelectListChanged函数被调用两次?
我在这个问题中使用了漂亮的代码来获取调用者.
两次调用者都是onchange事件,但是如果我使用以下方式查看调用者调用者:
arguments.callee.caller.caller
Run Code Online (Sandbox Code Playgroud)
第一个调用返回一些系统代码作为调用者(我假设),第二个调用返回undefined.
我正在检查undefined只对onchange做出反应一次,但是这看起来并不理想,whcy会不会被调用两次?
更新:
好的,找到了罪魁祸首!...除了我:-)但是两次调用companySelectListChanged函数的问题仍然存在.
onchange事件直接在select上设置.这会调用companySelectListChanged函数.
..注意'data-entry-field'类,现在在一个单独的链接javascript文件中,所有字段上的更改事件与此类绑定到一个更改保存按钮颜色的函数.这意味着onchange上有两个事件,但是publicSelectListChanged被调用两次?
附加绑定设置如下:
$('.data-entry-field').bind('keypress keyup change',function(e){highLightSaveButtons();});
假设它可能在选择列表上有2个更改事件,它会假设设置按键和键盘事件可能会破坏某些东西吗?
有任何想法吗?
另一个更新:
如果我删除了额外的"更改"绑定,那么select元素看起来很好并且一切正常.当添加'change'绑定时,事件触发一次并且硬连线'onchange'被触发两次.
如果这两个事件都是通过jQuery绑定的,那么一切正常,似乎混合硬连线onchange和jquery绑定的更改事件不能混合?我想这回答了我的问题,但似乎是IE的一个问题,并用jquery绑定这些事件.
我同意你的评价。我已经更新了http://gutfullofbeer.net/onchange.html上的小示例,除了 DOM 0 处理程序(设置有“onchange”属性的处理程序)之外,还包含一个 jQuery 处理程序。这似乎是一个 jQuery 错误,或者至少是 jQuery 未能处理 IE 的怪异现象。
我记录了 jQuery 票证 6593。