求高手解答关于ASP.NET网页里TAB和回车切换问题~~ 100
这是我添加的代码。用于回车来切换多行的TextBox:$(document).ready(function(){$("input:text:first").focus()...
这是我添加的代码。用于回车来切换多行的TextBox:
$(document).ready(function () {
$("input:text:first").focus(); // TextBox转换成html控件为<input type="text"/>
$("input:text").bind("keydown", function (e) {
if (e.which == 13) { // 获取Enter键值
e.preventDefault(); // 阻止表单按Enter键默认行为,防止按回车键提交表单
var nextIndex = $("input:text").index(this) + 1;
$("input:text")[nextIndex].focus();
}
});
});
但是现在只能到最后一行的Textbox就停住了,回车切换不了下面的提交按钮,必须用TAB建切过去,求解答怎么用回车键继续往下切换到按钮上! 展开
$(document).ready(function () {
$("input:text:first").focus(); // TextBox转换成html控件为<input type="text"/>
$("input:text").bind("keydown", function (e) {
if (e.which == 13) { // 获取Enter键值
e.preventDefault(); // 阻止表单按Enter键默认行为,防止按回车键提交表单
var nextIndex = $("input:text").index(this) + 1;
$("input:text")[nextIndex].focus();
}
});
});
但是现在只能到最后一行的Textbox就停住了,回车切换不了下面的提交按钮,必须用TAB建切过去,求解答怎么用回车键继续往下切换到按钮上! 展开
5个回答
展开全部
因为你的focus都是设置在input:text上,改成这样试试
var nextIndex = $("input:text").index(this) + 1;
if(nextIndex < $("input:text").length){
$("input:text")[nextIndex].focus();
}else{
$("input:button")[0].focus();
}
var nextIndex = $("input:text").index(this) + 1;
if(nextIndex < $("input:text").length){
$("input:text")[nextIndex].focus();
}else{
$("input:button")[0].focus();
}
追问
还是没用,到最后切不到按钮上...
追答
没看到你全部的代码,但是思路是我给你这样的,你研究下吧
展开全部
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" src="scripts/Jquery.1.7.js"></script>
<script type="text/javascript">
$(function () {
$("input[type=text]:eq(0)").focus();
$("input[type=text]").each(function (i) {
$(this).bind("keydown", function (e) {
if (e.which == 13) {
e.preventDefault();
if ($("input[type=text]").length-1!=i)
$("input[type=text]").eq(i + 1).focus();
else
$("input[type=submit]").focus();
}
});
})
})
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox9" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" src="scripts/Jquery.1.7.js"></script>
<script type="text/javascript">
$(function () {
$("input[type=text]:eq(0)").focus();
$("input[type=text]").each(function (i) {
$(this).bind("keydown", function (e) {
if (e.which == 13) {
e.preventDefault();
if ($("input[type=text]").length-1!=i)
$("input[type=text]").eq(i + 1).focus();
else
$("input[type=submit]").focus();
}
});
})
})
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox9" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为最尾一个不是 input:text 嘛。做个判断,如果当前trigger事件的是最尾一个TextBox,就固定将焦点放到提交的按钮,或干脆直接提交(即最尾一个TextBox不bind这个事件)。如果非要实现先让焦点到最后的Button上。也可以将所有有关的控件,用一个特定的CSS伪类,然后使用
$(".optionXX") 来获取,并梆定事件,最后判断如果按钮上的话,就return true进行提交。
PS:重点就是判断一下现在处于哪个控件上,作出相应的操作。
$(".optionXX") 来获取,并梆定事件,最后判断如果按钮上的话,就return true进行提交。
PS:重点就是判断一下现在处于哪个控件上,作出相应的操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var nextIndex = $("input:text").index(this) 这个只能匹配到文本框 可以借助class属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先var inputLength = $("input:text").length
如果当前文本框的index = inputLength - 1 时(减不减1自己判断去,我也不知道index是否从0开始的),说明文本框已经是最后一个,那么就不要执行e.preventDefault()了
如果当前文本框的index = inputLength - 1 时(减不减1自己判断去,我也不知道index是否从0开始的),说明文本框已经是最后一个,那么就不要执行e.preventDefault()了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询