2013-08-07 16 views
8

Ho fatto una piccola calcolatrice in javascript in cui gli utenti inseriscono il tasso di interesse e ammontano a quello che vogliono prendere in prestito e calcola quanto di un incentivo potrebbero ottenere.Rimozione di tutto tranne i numeri in una stringa

Il problema è che sono preoccupato che gli utenti inseriscano i simboli, ad es.

Importo mutuo richiesto: £ 360,000 - Tasso d'interesse: 4,6%

io non sono preoccupato per le cifre decimali in quanto questi sono necessari e non sembrano influenzare il calcolo, sono i simboli come £ e% che rovinano le cose.

C'è un modo semplice per togliere questi simboli dal Codice:

<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

possibile duplicato di [Regex per sostituire tutto tranne i numeri e un punto decimale] (http://stackoverflow.com/questions/4572194/regex-to-replace-everything -eccetto-numeri-e-un-punto decimale) – mplungjan

+0

Quando si fanno domande qui è necessario un minimo di ricerca. Come hai potuto perdere tutte le altre identiche domande? – mplungjan

+0

Il tuo markup è sbagliato, non c'è ID per input –

risposta

7

nota che si dovrebbe usare corretta DOM id per riferirsi tramite getElementById; È possibile utilizzare .replace() metodo per che:

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

Ma che rimuoverà delimitatore punto galleggiante troppo. Penso che sia una risposta alla tua domanda, ma non una soluzione del tuo problema. Per analizzare l'input dell'utente come un numero, è possibile utilizzare parseFloat() - Penso che sarà più corretto.

+3

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

+1

È possibile utilizzare '.replace (/ [^ 0-9.]/G, '');' se è necessario includere il punto. – Moob

+2

No, non è una buona idea dato che l'utente può quindi inserire 1234 ...56 e che sarà trattato come un buon numero –

0

c'è un ottimo plugin che puoi usare. Ad esempio

// include i file javascript jQuery.js e autoNumeric-1.8.3.js nell'intestazione.

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

vedere Controllo sotto http://www.decorplanit.com/plugin/

0

provare questo

Esempio:

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

Ora è possibile typecast al numero di

0

Probabilmente si dovrebbe verificare e rifiutare valori non validi ma se si hanno per pulire una stringa malfamata in un numero, allora questo dovrebbe funzionare:

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 

giocare con essa in this JS Bin.

4

Questa è la più breve:

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

Funziona solo! grazie –

Problemi correlati