前言 基础
尽管.Net中采用的是事件响应模式,其实它实际还是默认的把内容提交给本页,然后就可以响应已经定义好的cs中事件,如果把action指定像别的页面,就算指定了响应的事件,它也将不会执行!
一个运用,如果不是服务器端控件,怎样响应enter事件
如果在有服务器端控件控件和有input的情况下,按下enter键要响应input的实例如下
(1) js:
<script language="javascript" type ="text/javascript">
var flat=0;
function send(value,e)
{
document.getElementById ("form1").submit=false;
var event = e || window.event;
if(event.keyCode ==13 && value ==2)
{
flat=1;
}
}
function check(){
if(flat==1)
{
return true;
}
else
{
document.getElementById ("btnSend").click ();
return false;
}
}
</script>
(2) 页面
<form id="form1" onsubmit="return check()">
<asp:text id="TbSearch" runat="server">
<asp:Button id="ff" onclick="serarh()" text="搜索" runat="server"></asp:Button> //默认情况下,是提交给本页,所以会响应后台的serarh()事件
<br>
<input type="button" value="提交表单" onclick="sendForm()" id="btnSend" name="btnSend"> //确保sendForm()此方法是一个js方法(譬如典型的是ajax),而不需要本页面提交,否则也将不会执行
</form>
3:后台cs
protected void Page_Load(object sender, EventArgs e)
{
TbSearch.Attributes.Add("onkeydown", "send('2',event)");
}
再试试,当把焦点放在搜索框里了,按下enter键就会去搜索,如果放在页面的注册或者登录页里面的输入框,然后按下enter键,将会提交注册或登录
最后总结:
这种情况用得很广泛,譬如有很多网站,header上就有一个搜索按钮,而其它每个页面都会加载这个头,当要提交时候按下enter键后,却进行了搜索,并没有进行登录或注册
这个时候上面的内容就很重要
最后重申重点是:.Net响应事件会默认提交给本页面,于是就把本页提交禁用 即 document.getElementById ("form1").submit=false;