2010-02-22 3 views
8

Quelqu'un peut-il m'aider avec ce s'il vous plaît ...Jquery - Comment insérer un caractère dans une entrée

Je fais un formulaire Web. Je voudrais insérer le signe dollar dans certaines INPUT qui ont une classe de champ numérique. Je veux que le contenu de l'utilisateur suive le signe ou le cours du dollar.

Cela insère le signe dollar OK, mais le contenu se termine devant lui.

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

NOTE - le signe dollar est nécessaire parce que ce sont des données financières

autrement dit (rien à voir avec jquery :)!) - quelqu'un tape '100' et il devient '$ 100')

Répondre

10

Vous pouvez faire quelque chose comme ceci:

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

Dans la version 1.4, une solution simple et plus complète pour votre scénario:

$('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

Vous pouvez passer une fonction à val() et utiliser une expression régulière pour ajouter un $ à l'avant s'il n'y en a pas déjà là:

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

Le regex ci-dessus signifie remplacer une séquence de l'espace blanc au début de la valeur que n'est pas suivi d'un signe dollar avec un signe dollar. Cela fonctionnerait aussi:

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

ces fonctions injectent le code réel dans mon INPUTSs! (pas sûr de ce qui se passe là-bas) Merci pour les réponses très rapides. Ce que je voulais, c'est que, lorsque vous cliquez sur (n'importe où dans l'entrée), le curseur sautait sur le côté droit du signe dollar. Est-ce possible? – swisstony

+0

@Jared: ceux-ci n'injectent pas le code réel dans les entrées. Lisez la documentation liée pour 'val()'. Ils injectent la ** valeur de retour ** de la fonction dans les entrées. C'est une forme abrégée de 'each (function() {$ (this) .val (...)}' essentiellement. – cletus

+0

dans mon script, ils injectent le signe dollar dans la valeur d'entrée qui est passée avec le formulaire, ce que j'essaye de faire est d'ajouter un symbole de pourcentage après ma valeur, qui n'est pas passé avec le formulaire, pour l'instant je n'ai pas de chance –

9

Pourquoi rendre votre vie complexe? Il suffit de mettre le signe dollar dans le code HTML extérieur de l'élément d'entrée ...

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

Probablement la meilleure solution. – Qtax

Questions connexes