专注于基于URL的文本框

时间:2010-04-08 16:17:48

标签: asp.net javascript

我在一个页面上有两个表单,并希望根据URL调整输入框。

例如:domain.com/Default.aspx#login和domain.com/Default.aspx#register

和javascript我有这个:

        if (window.location.href = '?action=login')
        {
            window.document.getElementById('<%=txtUserName.ClientID %>').focus();
        }
        else if (window.location.href = '?action=register')
        {
            window.document.getElementById('<%=txtRegEmail.ClientID %>').focus();
        }

EDITED

3 个答案:

答案 0 :(得分:1)

您要么仅在服务器端使用查询字符串...

执行此操作

(我编写的代码太多PHP而我的Asp.NET有点生锈所以这段代码片段可能有语法/语言错误......)

<%
    if("login".Equals(Request.QueryString["action"])) {
        %>
        window.document.getElementById('<%=txtUserName.ClientID %>').focus();
        <%
    }
    else if("register".Equals(Request.QueryString["action"])) {
        %>
        window.document.getElementById('<%=txtRegEmail.ClientID %>').focus();
        <%
    }
%>

或者在客户端使用javascript和锚点#login

var url = window.location.hash;

if (url == "#action") {
    window.document.getElementById('<%=txtUserName.ClientID %>').focus();
} else if (url == "#register") {
    window.document.getElementById('<%=txtRegEmail.ClientID %>').focus();
}

答案 1 :(得分:0)

您可以使用window.location.href获取网址,并对其进行简单的字符串测试,以查看要设置的焦点。任何形式的url(锚点或查询字符串)都应该有效。

修改:您可以详细了解window.location对象here

编辑2:鉴于您添加的代码示例,看起来您正在使用ASP或ASP.Net。如果是这样,您应该在服务器端处理此问题,只需调用一次focus()并根据<%= %>在服务器端设置元素ID(“Request.Querystring”部分)宾语。

答案 2 :(得分:0)

var url = window.location.href;

if (url.indexOf('?action=login', 0) > -1) {
    window.document.getElementById('<%=txtUserName.ClientID %>').focus();
} else if (url.indexOf('?action=register', 0) > -1) {
    window.document.getElementById('<%=txtRegEmail.ClientID %>').focus();
}