使用jQuery在文本框中设置焦点
问题描述:
我在做一个小的jQuery函数。这个功能应该做的就是在离开文本框时,它应该将文本从文本框中显示为警报,清除文本框并在同一文本框中再次设置焦点。它正在执行显示警报和清除文本框中的文本的三个任务中的两个,但不会将焦点设置回该文本框。使用jQuery在文本框中设置焦点
请注意这个文本框是在一个窗体中,我也在这里使用了tab索引。当我点击确定提醒时,它将焦点移到下一个具有下一个标签索引的文本框。
这里是我的代码:
<script type="text/javascript">
function pageLoad() {
$("input[id$='txtEmailAddress']").blur(CheckOnServer);
}
function CheckOnServer() {
alert($("input[id$='txtEmailAddress']").val());
$("input[id$='txtEmailAddress']").val("");
$("input[id$='txtEmailAddress']").focus();
alert("2");
}
</script>
答
如果有多个字段以'txtEmailAddress'结尾,那么您的代码是不是试图在同一时间将焦点分配给它们中的每一个?我在想,错误的领域正在得到关注,因为$(input[id$='txtEmailAddress']
不是一个单一的DOM元素,而且jQuery并没有被设计为在一个对象数组上运行焦点函数。不过,我同意阿德里安的看法。如果你按照你想要的方式工作,你会从永远不会能够离开那个领域。如果您希望它执行“提醒,清除,重新对焦”只跳一次,请记住在之后清除onblur功能。
答
装上CheckOnServer功能的输入字段的模糊事件似乎真的怪我。我没有测试过你的代码,所以我可能是错的,但正如我所看到的,这是说:
当input[id$='txtEmailAddress']
失去焦点时,做一些事情,并重新给予焦点。这将是一个永无止境的循环...
至于为什么错误的领域是越来越重点,我没有比本更好的主意。
我敢肯定,它的建立到某些东西,但描述听起来像一个恼人的功能:) 你有多个输入,有一个ID结束txtEmailAddress? 如果是这样的话,焦点()可能会触发列表中的最后一个.. – Ben 2010-02-26 06:41:57
原谅我的无知,但不是警告(“2”)在那一点消除焦点? – 2010-02-26 13:42:49