我想写一个程序,这样我就可以输入0到255之间的IP地址。我的代码可以在IE中运行,但不能在Firefox或Chrome中运行。
function check(obj) {
var txt = obj.getAttribute("value");
txt = parseInt(txt);
if (txt > 255 || txt < 0) {
alert("must between 0 and 255");
obj.focus();
obj.select();
} else {
if (txt > 25) {
var next = parseInt(obj.getAttribute("id")) + 1;
if (next < 5) {
document.getElementById(next.toString()).focus();
}
}
}
}
<input type="text" maxlength="3" id="1" onkeyup="check(this);" />
<input type="text" maxlength="3" id="2" onkeyup="check(this);" />
<input type="text" maxlength="3" id="3" onkeyup="check(this);" />
<input type="text" maxlength="3" id="4" onkeyup="check(this);" />
1条答案
按热度按时间hgb9j2n61#
input
的当前值由其value
* 属性 * 反映,而不是value
* 属性 *。如果IE通过getAttribute
给你当前值,这是IE中的一个bug。您应该使用
obj.value
,而不是obj.getAttribute("value")
。有点让人困惑。:-)
value
* 属性 * 定义input
的 * 默认值 *,而不是其当前值。用户更改它时,它不会更改。当前值没有 attribute,您可以通过value
属性访问它。一些属性由同名的属性反映(例如id
),但value
不是其中之一。(有一个属性反映value
属性:defaultValue
。但同样,它是默认值,而不是当前值。)