2013-08-07 19 views
8

Zrobiłem mały kalkulator w javascript, w którym użytkownicy wprowadzają stopę procentową i kwotę, którą chcą pożyczyć, i oblicza, ile mogą otrzymać zachęty.Usuwanie wszystkiego oprócz liczb w ciągu znaków

Problem polega na tym, że martwię się, że użytkownicy wprowadzą symbole, np.

Kwota kredytu: £ 360,000 - Oprocentowanie: 4,6%

Nie martwię miejsc po przecinku, jak są one potrzebne i nie wydają się mieć wpływ na kalkulację, to symbole, takie jak £ i%, które zepsuły sytuację.

Czy istnieje prosty sposób rozebrać te symbole z kodem:

<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

możliwe duplikat [regex zastąpić wszystko z wyjątkiem cyfr i punkt po przecinku] (http://stackoverflow.com/questions/4572194/regex-to-replace-everything -recept-numbers-and-a-decimal-point) – mplungjan

+0

Przy zadawaniu pytań tutaj potrzebne są minimum badań. Jak mogłeś przegapić wszystkie inne identyczne pytania? – mplungjan

+0

znaczników jest źle, nie ma ID dla wejścia –

Odpowiedz

7

pamiętać, że należy użyć poprawnego identyfikatora DOM odnieść poprzez getElementById; Można użyć .replace() sposób, że:

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

Ale to usunie punkt ogranicznik pływaka też. Myślę, że jest to odpowiedź na twoje pytanie, ale nie rozwiązanie twojego problemu. Aby przeanalizować dane wprowadzane przez użytkownika jako liczby, można użyć parseFloat() - Myślę, że będzie to bardziej poprawne.

+3

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

+1

Możesz użyć '.replace (/ [^ 0-9.]/G, '');' jeśli musisz dołączyć kropkę. – Moob

+2

Nie, to nie jest dobry pomysł, ponieważ użytkownik może wprowadzić 1234 ...56 i że będzie traktowany jako dobry numer –

0

Istnieje bardzo dobra wtyczka, z której można korzystać. Na przykład:

// uwzględnij pliki javascript jQuery.js i autoNumeric-1.8.3.js w nagłówku.

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

See Sprawdź poniżej http://www.decorplanit.com/plugin/

0

spróbować tej

np

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

teraz można typecast do liczby

0

Powinieneś raczej przetestować i odrzucić nieprawidłowe wartości ale jeśli masz mieć do czyszczenia podejrzanie ciąg na liczbę wtedy to powinno działać:

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 

grać z nim w this JS Bin.

4

Jest to najkrótsza:

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

To działa tylko! Dziękuję Ci –

Powiązane problemy