【问题标题】:textbox focus not working on Internet explorer文本框焦点在 Internet Explorer 上不起作用
【发布时间】:2017-03-01 21:40:15
【问题描述】:

一旦满足最大长度标准,以下代码会将光标从一个文本框移动到下一个文本框。 以下代码在 Chrome 中运行良好。对于第一个文本框,最大长度为 3,因此光标会自动移动到下一个文本框。但不明白为什么在 Internet Explorer 中它不这样做。 请帮忙,我错过了重要的交货日期。请注意,'mobNum' 是这些文本框的类

$('.mobNum').keypress(function(evt) {
    debugger;
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    $("#msgMobileValidation").text("");
    $("#divClientValidMobile").hide();
    var idStr = $(this).attr('id').split('_')[0];
    var idCnt = $(this).attr('id').split('_')[1];
    var nextIdCnt = parseInt(idCnt) + 1;
    nextIdCnt = nextIdCnt.toString();
    var nextControlId = "#" + idStr + "_" + nextIdCnt;
    var strLength = this.value.length + 1;
    var limit = parseInt($(this).attr('maxlength'));
    if (strLength == limit) {
        //$(nextControlId).focus();
        document.getElementById(nextControlId).focus();
    }
});

【问题讨论】:

标签: javascript jquery


【解决方案1】:

对于IE你需要使用setTimeout实现焦点,所以替换行:

document.getElementById(nextControlId).focus();

用这个:

setTimeout(function(){document.getElementById(nextControlId).focus();},20);

请注意,您可以输入任何值而不是 20(其时间以毫秒为单位),但请确保它不会导致延迟。所以保持小(5、10、15、20...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2012-07-31
    • 2014-06-16
    • 1970-01-01
    • 2020-02-23
    • 2013-03-23
    相关资源
    最近更新 更多