繁体   English   中英

无法获取JavaScript代码在Firefox上运行

[英]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上却无法使用。

请帮助我使其在跨浏览器上运行。

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

var target = e.srcElement;

MDN上的Event.srcElement

Event.srcElement是标准Event.target属性的专有别名。 它特定于旧版本的Microsoft Internet Explorer。

它在Chrome中运行的唯一原因是该浏览器当前也出于兼容性原因对该属性进行了别名。

使用此代替:

var target = e.target;

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

(我假设您在isNumber定义了isNumber ,否则这也将是一个问题。)

在Chrome和Firefox中,均未定义函数isNumber()。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM