前言 基础
  尽管.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;

 

 

Posted on 2009-06-24 16:51  咖啡色的猪  阅读(315)  评论(1编辑  收藏  举报