禁用时,事件不会在下拉列表中触发

时间:2009-12-22 22:11:14

标签: asp.net javascript

此客户端脚本正被添加到现有代码库中的按钮中。它基本上显示一个弹出窗口,只要长时间运行的进程发生,系统就会忙碌。这适用于按钮,但是btn.disabled = true行导致SelectedIndexChanged事件永远不会触发(当在按钮上使用它时,点击甚至仍会触发)。如果我注释掉那条线,那就好了。禁用该对象以防止双击。关于为什么不解雇的任何想法?此代码正在注册为客户端脚本块,因此任何更改都会影响页面上使用此代码的所有按钮。

@"<script language='javascript' type='text/javascript'>
    function BB(btn, msg, btnID)
    {
         bb1 = new BusyBox('iBB1', 'bb1', 4, '" + ContentImageUrlPath + 
         @"/gears_ani_', '.gif', 125, 147, 207, msg);   
         btn.disabled = true;
         bb1.Show();
         __doPostBack(btnID,'');
         return false;
    }</script>";

以下是页面上显示的代码

<select id="foo" onchange="return BB(this,
'Processing','ddlRoadsAssessment');
setTimeout('__doPostBack(\'foo\',\'\')', 0)" name="foo">

2 个答案:

答案 0 :(得分:3)

是的,如果它被禁用,那么.NET将假设它没有改变,甚至不会查看发布的值。您必须手动检查Request.Form[ddlRoadsAssessment.ClientID](例如,OnInit)并将其与之前的值(例如,您可以存储在视图状态中)进行比较,如果它们不匹配,手动调用方法。

答案 1 :(得分:1)

我无法推测为什么事件不会触发以及该如何处理,但也许您可以使用readonly代替disabled