在ajaxComplete()函数下的文本框中设置焦点导致问题

时间:2014-01-24 04:54:19

标签: javascript jquery setfocus

我在点击单选按钮时发送ajax post请求。

 // Get phone number if user selects phone option
    $('.rdoPhone').click(function () {
   if ($('.rdoPhone').is(':checked')) {
       $(".clsEmail_Number").attr('maxlength', '10').focus();
    }
});

所需功能:
当我点击单选按钮('.rdoPhone')发送ajax请求时,焦点应移至texbox下方

<input type="text" class="clsEmail_Number" id="clsEmail_Number" style="width: 194px"
            name="clsEmail_Number" value="" /> 

但是,在ajax请求后,由于代码低,textbox的focus()会转移到页面的第一个文本框。

$(document).ajaxComplete(function (event, xhr, settings) {
        window.setTimeout(function () { $("input[type='text']:visible:first").focus(); }, 0);
});

如何确保我的代码也与$(文档)一起使用.ajaxComplete()

由于

2 个答案:

答案 0 :(得分:2)

您可以尝试使用

,而不是在ajaxComplete中设置焦点
 $( document ).ready(function() {
  window.setTimeout(function () { $("input[type='text']:visible:first").focus(); }, 0);
});

答案 1 :(得分:0)

我有一个相同的解决方案。但我也在寻找更好的选择(最佳选择)。

谢谢,

以下是我用来解决此案例的代码。

$(document).ajaxComplete(function (event, xhr, settings) {
    window.setTimeout(function () {
        if ($('.rdoEmail').is(':checked') || $('.rdoPhone').is(':checked')) {
            $(".clsEmail_Number").focus();
        }
        else {
            $("input[type='text']:visible:first").focus();
        }
    }, 0);
});