【问题标题】:Problem with a button's OnClientClick event inside an UpdatePanelUpdatePanel 中按钮的 OnClientClick 事件有问题
【发布时间】:2011-01-22 04:15:26
【问题描述】:

我正在使用类似的javascript

var TargetBaseControl = null;
window.onload = function()
{
   try
   {
      //get target base control.
      TargetBaseControl = 
        document.getElementById('<%= this.GridView1.ClientID %>');
   }
   catch(err)
   {
      TargetBaseControl = null;
   }
}
function TestCheckBox()
{              
   if(TargetBaseControl == null) return false;

   //get target child control.
   var TargetChildControl = "chkSelect";

   //get all the control of the type INPUT in the base control.
   var Inputs = TargetBaseControl.getElementsByTagName("input"); 

   for(var n = 0; n < Inputs.length; ++n)
      if(Inputs[n].type == 'checkbox' && 
         Inputs[n].id.indexOf(TargetChildControl,0) >= 0 && 
         Inputs[n].checked)
       return true;        

   alert('Select at least one checkbox!');
   return false;
}

在更新面板里面我有类似的代码

<asp:Button ID="ButtonSave" runat="server" OnClick="ButtonSave_Click"     
    OnClientClick="javascript:return TestCheckBox();" Text="Save" />

当我运行页面并单击按钮时,不再进行进一步处理,只是按钮已单击没有发生任何事情......

【问题讨论】:

  • 您确定要为点击触发返回 true 吗?
  • 我使用人为设计的示例对上述代码没有任何问题。我能看到的唯一潜在问题是未定义“TargetBaseControl”时事件不会触发。你确定你找到了正确的元素吗?

标签: asp.net javascript updatepanel


【解决方案1】:

试试这个:

function TestCheckBox() 
{               
   var TargetBaseControl = null; 
   if(TargetBaseControl = document.getElementById('<%= this.GridView1.ClientID %>')){

   //get target child control. 
   var TargetChildControl = "chkSelect"; 

   //get all the control of the type INPUT in the base control. 
   var Inputs = TargetBaseControl.getElementsByTagName("input");  

   for(var n = 0; n < Inputs.length; ++n) 
      if(Inputs[n].type == 'checkbox' &&  
         Inputs[n].id.indexOf(TargetChildControl,0) >= 0 &&  
         Inputs[n].checked) 
       return true;         
   }
   alert('Select at least one checkbox!'); 
   return false; 
}

【讨论】:

    【解决方案2】:

    在浏览器中查看页面的来源。 看看 OnClientClick 分配会发生什么。 它会被重写/重新路由吗? 那时应该很清楚。 您还可以使用诸如 firefox 中的 Firebug、IE8 开发人员工具、chrome 开发人员工具或 Visual Studio 等工具逐步完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多