代码之家  ›  专栏  ›  技术社区  ›  Aaron M

禁用时下拉列表上未触发事件

  •  1
  • Aaron M  · 技术社区  · 16 年前

    这个客户端脚本被添加到我们现有代码库中的按钮中。它基本上显示了一个弹出窗口,每当长时间运行的进程发生时,系统都很忙。这适用于按钮,但是btn.disabled=true行会导致SelectedIndexChanged事件从不触发(在按钮上使用它时,click偶数仍会触发)。如果我把那句话注释掉,它就会开火。该对象被禁用以防止双击。你知道它为什么不开火吗?此代码正在注册为客户端脚本块,因此任何更改都会影响页面上使用此代码的所有按钮。

    @"<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 回复  |  直到 16 年前
        1
  •  3
  •   David Hedlund    16 年前

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

        2
  •  1
  •   Pekka    16 年前

    我无法推测为什么这场比赛没有打响,以及该怎么办,但也许你可以与我合作 readonly 而不是 disabled

    推荐文章