50

ユーザーが金利と借りたい金額を入力する JavaScript で小さな計算機を作成しました。

問題は、ユーザーが記号を入力するのではないかと心配していることです。

ローン金額: £360,000 - 金利: 4.6%

これらは必要であり、計算に影響を与えないように見えるので、私は小数点以下の桁数について心配していません.それは物事を台無しにする£や%のような記号です.

これらのシンボルをコードから取り除く簡単な方法はありますか:

<td><input type="text" name="loan_amt" style="background-color:#FFF380;"></td>
<td><input type="text" name="interest_rate" style="background-color:#FFF380;"></td>


function Calculate()
{
    var loan_amt = document.getElementById('loan_amt').value;
    //this is how i get the loan amount entered
    var interest_rate = document.getElementById('interest_rate').value; 
    //this is how i get the interest rate

    alert (interest_rate);
}
4

7 に答える 7

51

getElementById を介して参照するには、正しい DOM ID を使用する必要があることに注意してください。そのために.replace()メソッドを使用できます。

var loan_amt = document.getElementById('loan_amt');
loan_amt.value = loan_amt.value.replace(/[^0-9]/g, '');

しかし、それは浮動小数点区切り文字も削除します。これは質問に対する回答ですが、問題の解決策ではありません。ユーザー入力を数値として解析するには、parseFloat()を使用できます。より適切になると思います。

于 2013-08-07T09:31:50.083 に答える
1

おそらく無効な値をテストして拒否する必要がありますが、危険な文字列を数値にクリーンアップする必要がある場合、これでうまくいくはずです:

var inStr = "a12ab.c34...h.re567";
var justOneDot = inStr.replace(/[.](?=.*?\.)/g, '');//look-ahead to replace all but last dot
var outStr = parseFloat(justOneDot.replace(/[^0-9.]/g,'')).toFixed(2); //parse as float and round to 2dp 
// = 1234.57

この JS Binで遊んでください。

于 2013-08-07T11:17:44.537 に答える
0

これを試して

例えば:

var a="4.52%"
var stringLength = a.length;
var lastChar = a.charAt(stringLength - 1); 

if(lastChar.match(/[^\w\s]/)) {
    a=a.substring(0,stringLength - 1);
}

alert(a);

数値に型キャストできるようになりました

于 2013-08-07T09:47:26.743 に答える