2009-08-21 22 views
6

Desidero avere un input di testo che a fuoco seleziona tutto il testo all'interno, se presente. In questo modo posso fare clic sull'input del testo e iniziare a digitare piuttosto che dover cancellare il valore corrente, supponendo che volessi sovrascrivere quello che era già nell'input di testo.jQuery imposta il testo selezionato

Come farei questo con jQuery?

+0

Non è che il comportamento di default nella maggior parte dei browser? L'ho appena provato con FireFox, Opera e IE e tutti evidenziano il contenuto di un input di testo quando lo inserisco. –

+0

Chris, mi dispiace. Sembra che tu abbia ragione. Non riesco a ricordare cosa mi ha portato lungo la strada della caccia a questo giù, ma mi sono così preso nella ricerca che ho dimenticato di ... provarlo :) –

+0

Ah, mi ricordo ora. Il testo è * non * selezionato quando si mouse nel campo di input. Ma sei corretto, * è * il comportamento predefinito quando si * tab * nel campo di input. Modificherò il post. –

risposta

6

Couple di collegamenti here.

$("#myInputField").focus(function(){ 
    // Select input field contents 
    this.select(); 
}); 

// Add this behavior to all text fields 
$("input[type=text]").focus(function(){ 
    // Select field contents 
    this.select(); 
}); 
4

Per selezionare solo il testo, devi fare qualcosa di simile:

$(".inputs-to-which-you-want-to-apply-this-behavior").focus(function() { 
    this.select(); 
}); 

Un altro approccio, che non selezionare il testo, ma piuttosto rimuove esso (solo per sostituirlo se si lascia vuota la casella, sarebbe simile a questa:

$(document).ready(function() { 
    $(".inputs-that-currently-have-a-default-value-in-them").each(function() { 
    var original = $(this).val(); 
    $(this).focus(function() { 
     if ($(this).val() == original) 
      $(this).val(''); 
    }); 

    $(this).blur(function() { 
     if ($(this).val() == '') 
     $(this).val(original); 
    }); 
    }); 
}); 

(Preferisco quest'ultimo approccio se il testo quello che è nella scatola per cominciare è il testo segnaposto come 'Inserisci il tuo nome' ma se quello che è nella casella è, ad esempio, il nome che ho inserito l'ultima volta l'idea originale di selezionare semplicemente il testo sarebbe sicuramente migliore.)

0

Da quello che ho provato questo è il comportamento predefinito nella maggior parte dei browser che uso.

Anche se la funzione select() fa ciò che altri hanno detto che fa. Invece ho pensato che avrebbe funzionato per impostare il valore del campo di input in bianco se il campo era focalizzato.

Qualcosa di simile:

$(":input").focus = function(){if(this.type=="text"){value=""}return true}; 
Problemi correlati