2012-08-21 36 views
5

Tengo un html con varios campos. Uno de los campos solo permite la entrada numérica. Pero ahora quiero que cuando el usuario ejecute pegue en ese campo todos los caracteres, excepto los números donde se eliminen o eliminen.Eliminar todos los caracteres no numéricos en el campo de entrada en el evento pegar Javascript

Por ejemplo pasta de usuario:

$ 1 234 567 -> 1234567 en el campo de entrada

1.234.567 -> 1234567

1.234.567 -> 1234567

y así sucesivamente

+0

es “-” (usado como signo menos) numérica? En general, no es una buena idea eliminar silenciosamente los caracteres de las entradas del usuario. Si quería pedir 100 artículos pero de algún modo me las arreglé para escribir 1oo, me gustaría recibir una advertencia y solicitar una corrección, en lugar de hacer que mi pedido se cambie silenciosamente a 1 artículo. –

+0

Gracias por sus comentarios, lo tendré en cuenta para el futuro. En este momento tengo que resolver solo este patrón. – halofourteen

Respuesta

11

use 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>​ 

o puede utilizar un temporizador para comprobar constantemente ese 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 

Pero el uso de expresiones regulares de otra respuesta :)

2

probar esto

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