我尝试使用以下代码格式化从(N50,000.00 NGN)
到(50000)
的文本字段值,但结果而不是生成50000
正在生成5000000
。
有人可以帮忙吗?
<script type="text/javascript" language="javascript">
function doWork() {
var amount = document.getElementsByName('amount');
var str = amount[0].value;
var temp = '';
for (i = 0; i < str.length; i++) {
if (!isNaN(str[i]))
temp += str[i];
}
amount[0].value = temp;
}
</script>
<input type="text" name="amount" value="N50,000.00 NGN" />
<input type="button" value="submit" onclick="doWork();">
答案 0 :(得分:1)
获得所需内容的最简单方法可能是在for循环中添加另一个条件:
if (str[i] === '.')
break;
答案 1 :(得分:0)
让我们来看看你想要格式化的值。
在N50,000.00 NGN
中,所有数字都是而不是NaN 。所以你的结果是5000000(50 000 00
)。解决方案是停在点符号处,例如
function doWork() {
var amount = document.getElementsByName('amount');
var str = amount[0].value;
var temp = '';
for (i = 0; i < str.length; i++) {
if (str[i] === '.') break; // there it is
if (!isNaN(str[i]))
temp += str[i];
}
amount[0].value = temp;
}
答案 2 :(得分:0)
这是使用正则表达式进行此操作的一种方法。请注意,如果用户在输入字段中有多个小数点,则可能会有奇怪的行为。
<script type="text/javascript" language="javascript">
function doWork() {
var amount = document.getElementsByName('amount');
amount[0].value = amount[0].value.replace(/[^0-9.]/g, "");
amount[0].value = amount[0].value.replace(/[.][0-9]*/g, "");
}
</script>
<input type="text" name="amount" value="N50,000.00 NGN" />
<input type="button" value="submit" onclick="doWork();">
第一行删除除数字和小数点以外的所有字符 第二个,删除所有小数点和它们右边的任何数字。
使用parseInt和toFixed可能会更好,但是:
<script type="text/javascript" language="javascript">
function doWork() {
var amount = document.getElementsByName('amount');
amount[0].value = parseInt(amount[0].value.replace(/[^0-9.]/g, "")).toFixed(0);
}
</script>
<input type="text" name="amount" value="N50,000.00 NGN" />
<input type="button" value="submit" onclick="doWork();">
答案 3 :(得分:-2)
你正在跳过小数。使用:
if (!isNaN(str[i]) || str[i]=='.')