我刚注意到:
//IN CHROME JS CONSOLE
parseInt("03010123"); //prints: 3010123
//IN NODE.JS
parseInt("03010123"); //prints: 790611
Run Code Online (Sandbox Code Playgroud)
由于两者都基于V8,为什么同样的操作会产生不同的结果?
最简单的例子是:
<input id="number" type="number" value="1">
console.log(document.getElementById('number').value);
Run Code Online (Sandbox Code Playgroud)
这按预期记录1.但是这样:
<input id="number" type="number" value="1A">
console.log(document.getElementById('number').value);
Run Code Online (Sandbox Code Playgroud)
只记录一个空字符串'',因为值中包含非数字字符.某些设备+浏览器(例如Chrome)允许您在这些输入中输入非数字字符.
这很烦人,因为我想为支持它的设备输入type ="number"(例如iPhone,iPad数字键盘).但是我想使用javascript来阻止输入脏输入 - 这需要在keyup上获取值 - 然后regex替换非数字字符.
看来jQuery的.val()方法给出了相同的结果.