在delault.aspx页中包含login.ascx和search.ascx两个用户控件,login.ascx用户控件中有两个TextBox,分别是TxtName、TxtPassWord,一个Buttont是ButLogin,search.ascx用户控件中也有一个TextBox和一个Buttont,分别是TxtProduct和ButSearch
    想要的效果是在delault.aspx页面中,如果在TxtName或TxtPassWord上输入信息后,焦点就在ButLogin上,如果在TxtProduct输入信息后,焦点就在ButSearch上,该怎样写?这是第三次发帖,那位老兄帮忙解决,感激不尽,三个帖一起结。
http://community.csdn.net/Expert/topic/3987/3987075.xml?temp=3.902835E-02
http://community.csdn.net/Expert/topic/4006/4006204.xml?temp=.573208

解决方案 »

  1.   

    response.write("<script>document.all.btnId.focus()</script>");
    这样试试看,在txtPassWord的onBlur事件中写
    btnId是Button的ID
      

  2.   


    textBox1.Attributes .Add("onkeydown","if(event.keyCode==13) {document.all."+button1.ClientID+".focus();document.all."+button1.ClientID+".click();}");textBox1输入完回车后焦点 到button1上
      

  3.   

    <%@ Register TagPrefix="Bmhd" Namespace="Bmhd.Controls.Utility" Assembly="Bmhd.Controls" %>
    <%@ Control Language="c#" EnableViewState="false" %>
    <%@ Import Namespace="Bmhd.Components.Components" %>
    <table cellSpacing="0" cellPadding="0" width="95%" border="0" height="22">
    <tr>
    <td align="right" valign="top" height="22"><asp:panel id="Panel1" runat="server" Visible="True" EnableViewState="False">用户名: 
    <Bmhd:SubmitTextBox id="TextBox_UserName" runat="server" Height="22px" Width="60px" SubmitControl="LinkButton_Login"></Bmhd:SubmitTextBox>密码: 
    <Bmhd:SubmitTextBox id="TextBox_Password" runat="server" Height="22px" Width="60px" TextMode="Password"
    SubmitControl="LinkButton_Login"></Bmhd:SubmitTextBox>验证码: 
    <Bmhd:SubmitTextBox id="TextBox_ValidateNum" runat="server" Height="22px" Width="60px" SubmitControl="LinkButton_Login"></Bmhd:SubmitTextBox>
    <asp:Image id="Image1" runat="server" Height="22px" ImageAlign="top"></asp:Image>
    <asp:DropDownList id="DropDownList1" runat="server" Height="22px">
    <asp:ListItem Value="0" Selected="True">不保存</asp:ListItem>
    <asp:ListItem Value="7">一个星期</asp:ListItem>
    <asp:ListItem Value="90">3个月</asp:ListItem>
    <asp:ListItem Value="9999">永远保存</asp:ListItem>
    </asp:DropDownList>
    <asp:LinkButton id="LinkButton_Login" runat="server" ForeColor="Blue" CausesValidation="False">登陆</asp:LinkButton>&nbsp;<A 
          href="<%= Globals.GetSiteUrls().Register()%>">注册</A>&nbsp;<A 
          href="<%= Globals.GetSiteUrls().GetPass()%>">取回密码</A>
           </asp:panel>
    <asp:panel id="Panel2" runat="server" Visible="False" EnableViewState="False">
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><div align="left">八面互动娱乐欢迎您: <asp:Label id="Label_UserName" runat="server"></asp:Label></div></td>
        <td><div align="right"><asp:LinkButton id="LinkButton_Signout" runat="server" ForeColor="Blue" CausesValidation="False">注销</asp:LinkButton></div></td>
      </tr>
    </table>
    </asp:panel></td>
    </tr>
    </table>
    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;namespace Bmhd.Controls.Utility
    {
    public class SubmitTextBox : TextBox
    {
    /// <summary>
    /// 用来指定按回车时由哪个按钮来响应
    /// </summary>
    [TypeConverter(typeof(SubmitableControlConvertor)), DefaultValue(""),Category("Behavior")]
    public string SubmitControl
    {
    get
    {
    object ret = this.ViewState["SubmitControl"];
    if (ret != null)
    {
    return (string) ret;
    }
    return string.Empty; 

    set 
    {
    this.ViewState["SubmitControl"] = value;
    }
    } protected override void AddAttributesToRender(HtmlTextWriter writer) 
    {
    base.AddAttributesToRender(writer);
    if(this.SubmitControl.Length > 0)
    {
    Control con = FindControl(SubmitControl);
    if(con != null)
    {
    string script = "if(event.keyCode == 13){document.getElementById('" + con.ClientID + "').click();event.returnValue=false;}";
    writer.AddAttribute("onkeydown",script);
    }
    }


    }
      

  4.   


    <script language="javascript"> 
    function document.onkeydown() 

    var e=event.srcElement; 
    if(event.keyCode==13) 

    document.getElementById("需要点击的那个按钮的id").click(); 
    return false; 


    </script> 
    如果页面上有多行文本框,在多行文本框内回车仅仅想实现换行而不是提交表单这么修改 
    if(e!=document.getElementById("多行文本框的id")&&event.keyCode== 13) 
      

  5.   

    这个好象不用写代码吧,在属性里设下就行了啊,好象是TabIndex.具体的,你去属性里好好找找吧
      

  6.   

    上面说的不知大家测试过没有,好象都只对多个BUTTON原本就都在同一个文件中时才有用,对于BUTTON在不同的.ascx用户控件文件是不起作用的。
      

  7.   

    你可在脚本中,预先设置某个按钮获得焦点。假设你想让第3个按钮先获得焦点,则在页面后面添加如下脚本
    <script>document.all("button3").focus();</script>
      

  8.   

    你将 login和search 的 内容 分别 放在 2个不同的<form></form>中,应该就可以了
      

  9.   

    在网上找到这个正符合我的要求,但具体不知道怎么用。那位老兄能讲解一下
    http://www.cnblogs.com/netufo/archive/2005/09/02/79841.html#228470
      

  10.   

    楼主已经接近找到答案了,现在的问题是控件的问题
    如果是在本页面中,脚本document.all["button1"]访问的就是button1按钮,
    如果这个button1是在用户控件login.ascx里,那么它的clientid就是
    控件的id加上“_”再加上按钮id,
    例如控件的ID是login1,那么doucment.all["login1_button1"].focus();才是有效的;这其中的规律其实通过IE->查看-〉源文件就可以看到
      

  11.   

    Eddie005(♂) 暴赱 『零零伍』(︶︵︶)  说的确实没错了。
    但是我有的页面是直接调用login.ascx控件,有的页面不是直接调用login.ascx控件的,是这样调用的
    If (IsNothing(MemberCookie)) Then
        Dim UC As UserControl = CType(Page.LoadControl("login.ascx"), UserControl)
        PlaceHolder1.Controls.Add(UC)
    Else
        Dim UC As UserControl = CType(Page.LoadControl("online.ascx"), UserControl)
        PlaceHolder1.Controls.Add(UC)
    End If
    所以没办法知道login.ascx控件的ID的,象这样的情况又该怎么处理呢
      

  12.   

    所以没办法知道login.ascx控件的ID的,象这样的情况又该怎么处理呢这种情况很好处理。给你看一段我的JS代码。我是获取ImageButton1控件在客户端的唯一ID
    var s=document.getElementById('<%=ImageButton1.UniqueID%>');
    alert(s);注意一下。一般使用UniqueID就可以了。但有时情况会特殊。需要自己在JS代码中对ImageButton1.UniqueID生成的ID进行一简单处理
      

  13.   

    menuvb(戏子……ZF论坛新版即将发布) 
    可以说具体怎样写JS代码吗,我对JS不太懂
      

  14.   

    楼上所有人说的javascript中用到的id,在服务器端代码中都对应某一个控件的ClientID。使用ClientID的话,你无须去考虑这个控件有多少层复空降,以及哪些用了INamingContainer,用了INamingContainer的自动会为所有子控件的ClientID添加前缀。除了这点以外,javascript方面的方法楼上已经说得很清楚了。至于如果你需要动态加载Control的话,建议你把如下代码放在class级(也就是UC作为全局变量):
    Dim UC As UserControl = CType(Page.LoadControl("login.ascx"), UserControl)
    这样UC.Something.ClientID就可以在任何地方取得。
      

  15.   

    用偶上面发的SubmitTextBox控件就行了,非常方便,可以重用。