无法获得在 Firefox 上运行的 JavaScript 代码

Can't get JavaScript code to work on Firefox

我写了一段代码,当表单字段达到其最大长度时(在本例中为 1),光标将移动到下一个字段。

JS:

window.onload=function(){
var container = document.getElementsByClassName("container")[0];
container.onkeyup = function(e) {
    var target = e.srcElement;
    var maxLength = parseInt(target.attributes["maxlength"].value, 10);
    var myLength = target.value.length;
    if (myLength >= maxLength) {
        var next = target;
        while (next = next.nextElementSibling) {
            if (next == null)
                break;
            if (next.tagName.toLowerCase() == "input") {
                next.focus();
                break;
            }
        }
    }
}
}

HTML:

<div class="container">
<label><input type="text" name="pin1" maxlength="1" pattern="\d{1}" onkeypress="return isNumber(event)" required/>&nbsp;-&nbsp;
<input type="text" name="pin2" maxlength="1" pattern="\d{1}" onkeypress="return isNumber(event)" required/>&nbsp;-&nbsp;
<input type="text" name="pin3" maxlength="1" pattern="\d{1}" onkeypress="return isNumber(event)" required/>&nbsp;-&nbsp;
<input type="text"  name="pin4" maxlength="1" pattern="\d{1}" onkeypress="return isNumber(event)" required/>
</label>
</div>

该表单在 Google Chrome 和其他移动浏览器上运行良好,但在 Firefox 上无法运行。

请帮助我让它在跨浏览器上运行。

在 Chrome 和 Firefox 中,函数 isNumber() 都没有定义。

其他问题是您使用的是非标准事件 属性 srcElement,您应该改用 e.target。 https://developer.mozilla.org/en/docs/Web/API/Event/srcElement

问题是您使用的是非标准事件 属性 srcElement

var target = e.srcElement;

来自MDN on Event.srcElement

Event.srcElement is a proprietary alias for the standard Event.target property. It is specific to old versions of Microsoft Internet Explorer.

它在 Chrome 中工作的唯一原因是出于兼容性原因,此浏览器当前也将此 属性 作为别名。

改用这个:

var target = e.target;

如果 IE 要求 srcElement 的每个版本都已过时,因此今天没有理由使用此 属性。

(我假设你在某处定义了 isNumber,否则这也会是一个问题。)