2013-08-07 231 views
8

我在javascript中創建了一個小型計算器,用戶輸入他們想要借入的利率和金額,並計算出可能獲得的激勵的多少。刪除字符串中除數字之外的所有內容

問題是我擔心用戶會輸入符號,例如,

貸款金額:£360000 - 利率: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); 
} 
+1

可能重複[正則表達式來代替一切,除了數字和小數點(http://stackoverflow.com/questions/4572194/regex-to-replace-everything -except-numbers-and-a-decimal-point) – mplungjan

+0

當你在這裏提問時,需要最少的研究。你怎麼能錯過所有其他相同的問題? – mplungjan

+0

您的標記錯誤,沒有ID輸入 –

回答

7

注意,你應該使用正確的DOM ID通過的getElementById參考; 您可以使用該方法.replace()

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

但是,這將消除浮點分隔符太。我認爲這是對你問題的回答,但不是你問題的解決方案。要將用戶輸入解析爲數字,您可以使用parseFloat() - 我認爲這樣會更準確。

+3

/g .......... – mplungjan

+1

你可以使用'.replace(/ [^ 0-9。]/g,'');'如果你需要包含點。 – Moob

+2

不,這不是一個好主意,因爲用戶可以輸入1234 ...56,那麼會被視爲好數字 –

0

有非常好的插件,你可以使用它。例如

//在頭文件中包含jQuery.js和autoNumeric-1.8.3.js JavaScript文件。

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"> </script> 
    <script src="autoNumeric-1.8.0.js" type=text/javascript> </script> 

    // this example uses the id selector & no options passed  
    jQuery(function($) { 
     $('#someID_defaults').autoNumeric('init');  
    }); 

見檢查下面 http://www.decorplanit.com/plugin/

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); 

現在你可以強制轉換爲數字

0

你也許應該測試,並拒絕無效值但如果你清潔狡猾的字符串轉換成號碼,然後這應該工作:在this JS Bin

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 

播放它。

4

這是最短:

replace(/\D/g,''); 
+0

這隻適用於!謝謝 –

相關問題