2010-02-22 13 views
8

¿Alguien me puede ayudar con esto por favor ...Jquery - Cómo puedo insertar un carácter en una entrada

Estoy haciendo un formulario web. Me gustaría insertar el signo de dólar en algunas INPUT que tienen una clase de campo numérico. Quiero que el contenido del usuario siga el signo o curso de dólar.

Esto inserta el signo de dólar OK, pero el contenido termina en frente de él.

$('input.numberfield').val('$'); 

NOTA - Se requiere el signo del dólar porque se trata de datos financieros

dicho de otro modo (nada que ver con jQuery :)!) - alguien escribe '100' y se convierte en '$ 100')

Respuesta

10

Usted puede hacer algo como esto:

$('input.numberfield').each(function() { 
    $(this).val('$' + $(this).val()); 
} 

En 1.4, una sencilla solución más completa para su escenario:

$('input.numberfield').keyup(function() { 
    $(this).val(function(i,v) { 
    return '$' + v.replace('$',''); //remove exisiting, add back. 
    }); 
}); 
0
var store = $("input.numberfield"); 
store.val("$" + store.val()); 
3

se puede pasar de una función a val() y utilizar una expresión regular para añadir un $ al frente si no hay uno que ya:

$("input.numberfield").val(function(i, val) { 
    return val.replace(/^\s*(?!\$)/, "$"); 
}); 

la expresión regular anterior significa reemplazar una secuencia de espacio en blanco al comienzo del valor que no es seguido de un signo de dólar con un signo de dólar. Esto también funcionaría:

$("input.numberfield").val(function(i, val) { 
    return val.replace(/^\s*(\$)?/, "$"); 
}); 
+1

estas funciones están inyectando el código real en mi INPUTSs! (no estoy seguro de lo que está pasando allí) Gracias por las respuestas muy rápidas. Lo que quería era que, cuando hiciera clic (en cualquier lugar de la entrada), el cursor saltara al lado derecho del signo de dólar. ¿Es eso posible? – swisstony

+0

@Jared: estos no están inyectando el código real en las entradas. Lea la documentación vinculada para 'val()'. Están inyectando el ** valor de retorno ** de la función en las entradas. Es una forma abreviada de 'cada (function() {$ (this) .val (...)}' esencialmente. – cletus

+0

en mi scrip están inyectando el signo de dólar en el valor de entrada que se está pasando con el formulario, así que la forma se está rompiendo. Lo que estoy tratando de hacer es agregar un símbolo de porcentaje después de mi valor, que no se aprobó con el formulario. Hasta ahora no he tenido suerte. –

9

¿Por qué hacer su vida compleja? Sólo hay que poner el signo de dólar en el HTML fuera del elemento de entrada ...

<span style="border: inset 1px black; padding: 1px;"> 
    $<input style="border: none; padding: 0;"> 
</span> 
+2

Probablemente la mejor solución. – Qtax

Cuestiones relacionadas