提问时间: 2007-12-05 16:39
悬赏分:30 浏览:998 次
各位大侠们,问题壁虎又来提问了。
先把产生问题的过程说下:
今天想用JS在客户端执行一个按钮的onclick()事件,来引起一个回发去执行一个Button的服务器端事件。
调用 btn.onclick();
但提示 无对象。然后一检查,才发现onclick()事件为null。
查看html 发现按钮如下:
<input type="submit" name="btnNext" value="下一步" id="btnNext" class="button_normal"/>
用的是type="submit" 也就是提交来实现的点击回发。没有onclick事件。而且一个from内有多个type="submit"的按钮。
于是问题就来了:
如代码所示:
<body>
<form name="form1" method="post" action="WebForm1.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTQ3NjkyOTcyMmRkUcQ+2fGohGzyIbKrTz5Vh/t2CAg=" />
</div>
<div>
<input type="submit" name="Button1" value="Button" id="Button1" />
<input type="submit" name="Button2" value="Button" id="Button2" /></div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwLLhbb8BgKM54rGBgK7q7GGCKnsv6niZyFRhWMec9EHCuSmBjg/" />
</div></form>
</body>
一个from中有多个submit。
那么提交后,
1、服务器端是怎么判断哪个submit发出的回发呢?
2、在js中,如果要去触发Button1的回发,然后使服务器端也能执行相应的onclick事件。应该怎么做?
3、2个隐藏控件。__VIEWSTATE存的是ViewState,我知道。但是第二个__EVENTVALIDATION又存的是什么?用ViewStateDecoder2工具看出来的就是3个数字,不知道什么意思。
希望哪位大侠能帮忙回答一下。或者有什么相应的资料或文章也请不吝提供。
问题补充:首先声明我没有攻击别人网站的想法。之所以只贴了客户端代码,那是因为问的问题与服务端无关,其实服务器端什么都没写,只是在页面上托了2个Button。
Klesh Wong的解答了我的第1个问题。在此表示感谢。
当submit类型的input元素被点击时,browser会把该input的name和value作为字段post到服务器,那么服务器端就可以根据这个字段来判断是哪个button被click了。
但是 submit类型的input元素 是没有onclick事件的(当然你可以添加客户端的onclick,但是在本问题中没有。)所以不能用 js调用onclick方法。
希望有高人能帮忙回答2,3。