Chrome 获取值属性未获取输入的当前值

pgky5nke  于 2023-05-04  发布在  Go
关注(0)|答案(1)|浏览(179)

我想写一个程序,这样我就可以输入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);" />
hgb9j2n6

hgb9j2n61#

input的当前值由其value * 属性 * 反映,而不是value * 属性 *。如果IE通过getAttribute给你当前值,这是IE中的一个bug。
您应该使用obj.value,而不是obj.getAttribute("value")
有点让人困惑。:-)value * 属性 * 定义input的 * 默认值 *,而不是其当前值。用户更改它时,它不会更改。当前值没有 attribute,您可以通过value属性访问它。一些属性由同名的属性反映(例如id),但value不是其中之一。(有一个属性反映value属性:defaultValue。但同样,它是默认值,而不是当前值。)

相关问题