2009-05-08 20 views
86

ho bisogno di aggiungere del testo a un campo di input ...aggiungere testo al campo di input

+2

possibile duplicato [E 'possibile fare ".value + =" in JQuery?] (Http://stackoverflow.com/questions/1224133/is-it-possible -to-do-value-in-jquery) –

risposta

166
$('#input-field-id').val($('#input-field-id').val() + 'more text'); 
+0

Grazie mille! –

+3

Per favore leggi anche la mia risposta a questa domanda - Non c'è davvero alcun motivo per chiamare '$ ('# input-field-id') due volte ... Risposta molto semplice - +1 – gnarf

+2

Mi sento come se dovessi essere una funzione che aggiunge al valore di un input come si può con 'innerHTML'. –

17

Se si prevede di utilizzare aggiungendo più di una volta, si potrebbe voler scrivere una funzione:

//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); 
} 

Dopo si può semplicemente chiamare:

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

Non riesco ad aggiungere un segnaposto a una casella di ricerca e desidero utilizzarlo e lasciare libera la casella quando l'utente posiziona il cursore nella casella di ricerca. È fattibile? – KevinOrin

92

Ci sono due opzioni. L'approccio di Ayman è il più semplice, ma aggiungerei una nota in più. Si dovrebbe davvero in cache selezioni jQuery, non v'è alcun motivo per chiamare $("#input-field-id") due volte:

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

L'altra opzione, .val() può anche prendere una funzione come argomento. Questo ha l'advantange di facile lavorare su più ingressi:

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

Amare l''altra opzione' - bel po 'di FP. – laher

+1

Questa dovrebbe essere la risposta accettata btw. – MoniXx

+0

L'altra opinione ha un buon profumo – Jim

3

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

 
\t // And that's how to use it: 
 
\t $('#SomeID') 
 
\t \t .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>

Beh, quando la creazione di questo esempio ho in qualche modo avuto un po 'confuso. "ValueText" vs>NodeText attuale < non .val() dovrebbe funzionare sui dati del valore dell'attributo? Comunque io e te potremmo chiarire questo prima o poi.

Tuttavia il punto per ora è:

Quando si lavora con dati del modulo utilizzare .val().

Quando si tratta di dati per lo più sola lettura tra il tag utilizza .text() o .append() per aggiungere del testo.

+1

Questo aggiunge qualcosa di nuovo per rispondere meglio alla domanda? Capisco che tu stia solo facendo un'estensione, ma a questo è stata data risposta per un po 'di tempo. Voglio solo assicurarmi che la qualità di SO venga confermata. –

+1

Grazie per la cura - Mi piace. Ma sì, hai ragione, non c'è molto di nuovo l'essenza rimane uguale. Tuttavia, quando digerisco le risposte attuali, ho sentito che si poteva fare un po 'di attenzione sullo stile e sull'implementazione. Per prima cosa ho controllato se alcuni dei post potevano essere modificati, ma alla fine ho pensato che fosse meglio crearne uno nuovo. Quindi, cosa c'è di nuovo: * È possibile eseguire il snipped. * L'estensione aiuta molto a scrivere codice auto-documentante, senza distogliere troppo l'essenza. – Nadu

0
<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <style type="text/css"> 
     *{ 
      font-family: arial; 
      font-size: 15px; 
     } 
    </style> 
</head> 
<body> 
    <button id="more">More</button><br/><br/> 
    <div> 
     User Name : <input type="text" class="users"/><br/><br/> 
    </div> 
    <button id="btn_data">Send Data</button> 
    <script type="text/javascript"> 
     jQuery(document).ready(function($) { 
      $('#more').on('click',function(x){ 
       var textMore = "User Name : <input type='text' class='users'/><br/><br/>"; 
       $("div").append(textMore); 
      }); 

      $('#btn_data').on('click',function(x){ 
       var users=$(".users"); 
       $(users).each(function(i, e) { 
        console.log($(e).val()); 
       }); 
      }) 
     }); 
    </script> 
</body> 
</html> 

uscita enter image description here

Problemi correlati