我正在尝试将用户输入的值更改为真实数字(例如15或144.38)。如果它有未批准的字符(例如$,),那么它们应该被删除。此外,如果用户输入具有多个期间的值(例如43.14.14),那么我想清除整个值。我能够做第1步但不能指出第2步,请指教。到目前为止,这是我的代码 http://jsbin.com/otawiVa/1
function myFunction()
{
var str = document.getElementById("number_field").value;
var res = str.replace(/[^0-9.}]/g,"");
document.getElementById("approved_number").innerHTML=res;
}
答案 0 :(得分:1)
将您的功能更改为
function myFunction()
{
var str = document.getElementById("number_field").value;
var res = str.replace(/[^0-9.}]/g,"");
if (res.indexOf('.') !== res.lastIndexOf('.')) {
document.getElementById("approved_number").innerHTML="";
} else {
document.getElementById("approved_number").innerHTML=res;
}
}
此处示例:
答案 1 :(得分:0)
有关可能的答案,请参阅http://jsbin.com/OKoJuloQ/3/。
在不提供反馈的情况下更改用户输入可能不是一个好主意。
最好只处理可以作为数字的内容并报告其余部分。
window.alert只是报告它的一种方式。
重要的位是转换为Number
并针对NaN
进行测试。
代码(也可通过上面的链接获取)
<!DOCTYPE html>
<html>
<body>
<input type="text" value="" id="number_field">
<button onclick="myFunction()">Submit</button>
<p id="approved_number"></p>
<script>
function myFunction() {
try {
var str = document.getElementById("number_field").value;
// var res = str.replace(/[^0-9.}]/g,"");
var res = str;
if (Number.isNaN(Number(res))) {
window.alert(res + " is not a number (NaN)\nOnly digits, decimal point,\nand exponent (e.g. 3.2e4) are allowed");
} else {
document.getElementById("approved_number").innerHTML=Number(res).toString(10);
}
} catch (exception) {
window.alert(exception);
}
}
</script>
</body>
</html>