时间:2021-07-01 10:21:17 帮助过:33人阅读
<form id="form1" runat="server">
但在访问页面的源代码中可以看到:
代码如下:
<form name="form1" method="post" action="Default.aspx" id="form1">
所以在输入框默认直接按回车,其实就是把表单提交到了form的action对应的页面,而并没有触发任何事件。
奇怪的地方:当一个aspx页面上没有使用web控件的时候,在输入框里按回车,默认是不会触发任何一个button按钮的onclick事件;但当页面上有使用web控件的时候,在输入框里按回车,默认会触发第一个button的onclick事件。【这里的第一指页面代码中最先出现的button控件,包括web控件内的button控件】
下面说说如何通过js来触发button按钮的onclick事件。
默认的button控件,在html中的代码是这样的:
代码如下:
<input type="submit" name="Button1" value="Button" id="Button1" />
实际上点击这个button触发的onclick事件调用了一个js脚本:__doPostBack(eventTarget, eventArgument)
button 控件有个属性:UseSubmitBehavior,默认是true,当你修改为false的时候,再去看html的源代码,就能清楚的看到调用的js脚本函数。
代码如下:
<input type="button" name="Button1" value="Button" onclick="javascript:__doPostBack('Button1','')" id="Button1" />
生成的js脚本:
代码如下:
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1; function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit(); }
//]]>
</script>
了解了这块内容,要处理输入框按回车触发button的onclick事件就简单的多了,就是截获输入框按回车的这个动作,然后通过js调用__doPostBack这个函数就OK了输入框:
代码如下:
<input name="TextBox1" type="text" id="TextBox1" onkeydown="return KeyDown('Button1');" />
<input type="submit" name="Button1" value="Button" id="Button1" />
js脚本
代码如下:
function KeyDown(btn) {
if (event.keyCode != 13) //按键不是enter键 return; else //按键是enter键 try {
__doPostBack(btn, '');
return false; catch (e) {
alert(e);
return; }
}
如果要输入框和button控件是在web控件里的,就需要特别注意:
控件中的button控件生成的html代码:
代码如下:
<input type="submit" name="WUC11$Button2" value="Button" id="WUC11_Button2" />
__doPostBack中用到的是input按钮的name属性,web控件中button,在生成的html代码里会加上控件的ID,所以传递的 button名称不要写错了。