UpdatePanel中按钮的OnClientClick事件出现问题

时间:2010-03-01 05:07:38

标签: asp.net javascript updatepanel

我正在使用像

这样的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" />

当我运行页面并单击按钮时,不再进一步处理只是按钮已经点击没什么好笑......

2 个答案:

答案 0 :(得分:0)

试试这个:

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; 
}

答案 1 :(得分:0)

在浏览器中查看页面的来源。 看看OnClientClick赋值会发生什么。 它会被重写/重新路由吗? 那时候应该很清楚。 您还可以使用Firefox中的Firebug,IE8开发人员工具,Chrome开发人员工具或可视化工作室等工具进行操作