2012-08-21 8 views
5

Ho un html con diversi campi. Uno dei campi consente solo input numerici. Ma ora voglio che quando l'utente esegue incollare in quel campo tutti i caratteri, tranne i numeri in cui sono stati rimossi o eliminati.Elimina tutti i caratteri non numerici nel campo di input sull'evento paste Javascript

Per pasta esempio utente:

$ 1 234 567 -> 1234567 nel campo di input

1.234.567 -> 1234567

1.234.567 -> 1234567

e così via

+0

è “-” (usato come segno meno) numerico? In generale, non è una buona idea cancellare i caratteri dall'input dell'utente. Se volevo ordinare 100 articoli, ma in qualche modo sono riuscito a digitare 1oo invece, vorrei essere avvisato e richiesto una correzione, piuttosto che avere il mio ordine cambiato in modo silenzioso in 1 elemento. –

+0

Grazie per il commento, lo terrò a mente per il futuro. In questo momento devo risolvere solo questo schema. – halofourteen

risposta

11

usa regex.

<input id="inputBox" name="inputBox" /> 
<script type="text/javascript"> 
var inputBox = document.getElementById('inputBox'); 
inputBox.onchange = function(){ 
    inputBox.value = inputBox.value.replace(/[^0-9]/g, ''); 
} 
</script>​ 

oppure è possibile utilizzare un timer per controllare costantemente quel campo.

<input id="inputBox" name="inputBox" /> 
<input id="inputBox2" name="inputBox2" /> 
<script type="text/javascript"> 
var timer = new Array(); 
function checkFields(el){ 
    var inputBox = document.getElementById(el); 
    inputBox.value = inputBox.value.replace(/[^0-9]/g, ''); 
    clearTimeout(timer[el]); 
    timer[el] = setTimeout((function(){ checkFields(el); }), 50); 
}; 
function timerFields(el){ 
    timer[el] = setTimeout((function(){ checkFields(el); }), 50); 
}; 
timerFields('inputBox'); 
timerFields('inputBox2'); 
</script>​ 
0
var f = function (s) { 
    var r = ''; 

    for (var i in s) { 
    if ('0' <= s[i] && s[i] <= '9') { 
     r += s[i]; 
    } 
    } 

    return r; 
} 

alert(f('123.234-234?345')); // 23234234345 

Ma utilizzare regexp da un'altra risposta :)

2

provare questo

var regexp=/\D/g; 
alert(("$1 234 567").replace(regexp,"")); 
Problemi correlati