文本框焦点无法在Internet Explorer上工作

时间:2017-03-01 13:33:29

标签: javascript jquery

以下代码在满足maxlength条件后将光标从一个文本框移动到下一个文本框。 以下代码在Chrome中运行良好。对于第一个文本框,最大长度为3,因此光标自动移动到下一个文本框。但不明白为什么在互联网浏览器中它没有这样做。 请帮忙,我错过了重要的交货日期。请注意' 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();
    }
});

1 个答案:

答案 0 :(得分:0)

对于IE,您需要使用setTimeout实现焦点,因此请替换以下行:

document.getElementById(nextControlId).focus();

这一个:

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

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