我在一个页面上有两个表单,并希望根据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
答案 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();
}