121 votes

Ajouter du texte au champ de saisie

J'ai besoin d'ajouter du texte à un champ de saisie...

3 votes

220voto

Ayman Hourieh Points 39435
    $('#input-field-id').val($('#input-field-id').val() + 'more text');

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="input-field-id" />

6 votes

Veuillez lire ma réponse à cette question également. Il n'y a vraiment aucune raison de devoir appeler. $('#input-field-id') deux fois... Réponse très simple cependant - +1

2 votes

J'ai l'impression qu'il devrait y avoir une fonction qui ajoute à la valeur d'une entrée comme on peut le faire avec la fonction innerHTML .

115voto

gnarf Points 49213

Il y a deux options. L'approche d'Ayman est la plus simple, mais j'y ajouterais une remarque supplémentaire. Vous devriez vraiment mettre en cache les sélections jQuery, il n'y a aucune raison d'appeler $("#input-field-id") deux fois :

var input = $( "#input-field-id" );
input.val( input.val() + "more text" );

L'autre option, .val() peut également prendre une fonction comme argument. Ceci a l'avantage de pouvoir travailler facilement sur des entrées multiples :

$( "input" ).val( function( index, val ) {
    return val + "more text";
});

3 votes

J'adore l'"autre option" - joli morceau de FP.

0 votes

Notez que l'actualisation de la page ou la soumission du formulaire et le retour à la page ajouteront bien sûr le même texte ajouté à chaque fois, de sorte que vous vous retrouverez avec "plus de texte" puis "plus de texteplus de texte", etc.

17voto

Margus Points 6175

Si vous avez l'intention d'utiliser la fonction d'addition plus d'une fois, il est préférable d'écrire une fonction :

//Append text to input element
function jQ_append(id_of_input, text){
    var input_id = '#'+id_of_input;
    $(input_id).val($(input_id).val() + text);
}

Après vous pouvez juste l'appeler :

jQ_append('my_input_id', 'add this text');

0 votes

Je ne peux pas ajouter d'espace réservé à un champ de recherche. J'aimerais utiliser cet espace et le faire disparaître lorsque l'utilisateur place le curseur dans le champ de recherche. Est-ce faisable ?

5voto

Nadu Points 81
    // Define appendVal by extending JQuery
    $.fn.appendVal = function( TextToAppend ) {
        return $(this).val(
            $(this).val() + TextToAppend
        );
    };
//_____________________________________________

    // And that's how to use it:
    $('#SomeID')
        .appendVal( 'This text was just added' )

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<textarea 
          id    =  "SomeID"
          value =  "ValueText"
          type  =  "text"
>Current NodeText
</textarea>
  </form>

En créant cet exemple, je me suis un peu perdu. " Texte de la valeur " vs > Texte du nœud actuel < N'est pas .val() censé fonctionner sur les données de l valeur attribut ? Quoi qu'il en soit, vous et moi pourrons éclaircir ce point tôt ou tard.

Cependant, le point pour l'instant est :

Lorsque vous travaillez avec données du formulaire utiliser .val() .

Lorsqu'il s'agit de la plupart des données en lecture seule entre les balises, utilisez .text() o .append() pour ajouter du texte.

4voto

kgiannakakis Points 62727

Vous êtes probablement à la recherche de val()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X