使用jQuery在文本框中设置焦点

时间:2010-02-26 06:30:28

标签: jquery jquery-selectors

我正在做一个小的jQuery函数。此功能应该做的是在离开文本框时它应该将文本框中的文本显示为警告,清除文本框并再次将焦点设置在同一文本框中。它正在执行三个任务中的两个,在警报和清除文本框中显示文本,但它没有将焦点设置回该文本框中。

请注意,此文本框位于表格中,我也在此处使用了标签索引。当我在警告中单击确定时,它将焦点移动到具有下一个标签索引的下一个文本框。

这是我的代码:

<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>

2 个答案:

答案 0 :(得分:2)

如果有多个字段以'txtEmailAddress'结尾,那么您的代码是否会尝试同时为每个字段分配焦点?我认为错误的字段正在获得关注,因为$(input[id$='txtEmailAddress']不是单个DOM元素,并且jQuery不是为了在对象数组上运行焦点函数而设计的。

但是,我同意阿德里安的意见。如果你按照你想要的方式工作,你永远能够离开那个领域。如果您希望它只进行一次“警报,清除,重新聚焦”舞蹈,请记得事后清除onblur功能。

答案 1 :(得分:1)

将CheckOnServer函数附加到输入字段的blur事件对我来说似乎很奇怪。我没有测试过你的代码,所以我可能错了,但正如我所看到的,这就是说:

input[id$='txtEmailAddress']失去焦点时,做一些事情,并再次集中注意力。这将是一个永无止境的循环...

至于为什么错误的领域正在获得关注,我没有比Ben更好的想法。