积极答复者
极度困惑,按钮绑定客户端事件。

问题
-
请能给我一个详细的解答,这个问题困扰很久了,虽然每次都过关,但是还不明白本质,所以来这里问个为什么?
我用的是vs2003,写web程序。问题就是,客户端验证的问题。在服务器按钮上绑定客户端事件JavaScript,来验证,每次用都不是那么顺利,调式过来调过去,跌跌装装的,没一次顺心的。请看我的源码
this.del_data.Attributes.Add("onclick","return del_data()");
今天的问题是调用这个del_data()方法不成功。
<script>
function del_data()
{
alert("test")
}
</script>
后来我该了方法名为ddd()又可以正常使用,真是抑郁的很?是不是asp.net自带的安全机制,捕获了我这个方法中的 del,而没有执行?还有this.del_data.Attributes.Add("onclick","return del_data()");中,return del_data()后边什么情况下要带上分号,有时候不带分号不成功,有时候好像又无所谓分号,被搞的云里雾里的,
答案
-
你好!我测试了的确是这样的,原因当控件 ID 与 方法名相同时,自动将 del_data 解析成了 Id 为 del_data 的这个控件对象,所以这里当 ID 与方法重名时去执行了控件的对象方法(相当于执行了 this();)。这和你是否使用 VS 2003 无关。
知识改变命运,奋斗成就人生!- 已标记为答案 fangyanqin 2010年1月21日 3:24
全部回复
-
由于代码比较长,我只取和这个相关的完整的,其实也很简单。我测试了一下,如果,把控件名和方法名修改一样,调用失败。
后台:
private void Page_Load(object sender, System.EventArgs e)
{
this.re_data.Attributes.Add("onclick","return chk()");
this.del_data.Attributes.Add("onclick","return del_data()");//改成和方法名一样,就无法调用了
}
前台方法:
function del_data()
{
if(document.getElementById("get_id").value=="" )
{
alert("请先点选菜单名称后再操作!!");
return false;
}if (window.confirm("确认要删除吗?"))
{
return true;
}
else
{
return false;
}
return true;
}
================难道说这个是vs2003的一个bug? -
你好!我测试了的确是这样的,原因当控件 ID 与 方法名相同时,自动将 del_data 解析成了 Id 为 del_data 的这个控件对象,所以这里当 ID 与方法重名时去执行了控件的对象方法(相当于执行了 this();)。这和你是否使用 VS 2003 无关。
知识改变命运,奋斗成就人生!- 已标记为答案 fangyanqin 2010年1月21日 3:24