2010-09-27 15 views
9

Ho una casella di input a cui è stato assegnato un valore di default. Come posso rimuovere questo testo quando l'utente si concentra sul campo ::Come rimuovere il valore predefinito di input su focus

CODE

<input type="text" name="kp1_description" value="Enter Keypress Description"> 
+0

Questa non è una risposta, ma in futuro sarà http://dev.w3.org/html5/spec/Overview.html#the-placeholder-attribute – Galen

+0

possibile duplicato di [Elimina il valore predefinito di un testo di input on click] (http://stackoverflow.com/questions/2984311/delete-default-valore-of-an-input-text-on-click) – ripper234

risposta

15
$(document).ready(function(){ 
    var Input = $('input[name=kp1_description]'); 
    var default_value = Input.val(); 

    Input.focus(function() { 
     if(Input.val() == default_value) Input.val(""); 
    }).blur(function(){ 
     if(Input.val().length == 0) Input.val(default_value); 
    }); 
})​ 

Che dovrebbe farlo.

aggiornamento, dimenticato che il fuoco non ha un secondo parametro per l'evento di messa a fuoco fuori perché non c'è nessuno, deve essere incatenato con sfocatura:

http://jsfiddle.net/hDCsZ/

si dovrebbe anche pensare di creare la vostra propria funzione di questo tipo:

$.fn.ToggleInputValue = function(){ 
    return $(this).each(function(){ 
     var Input = $(this); 
     var default_value = Input.val(); 

     Input.focus(function() { 
      if(Input.val() == default_value) Input.val(""); 
     }).blur(function(){ 
      if(Input.val().length == 0) Input.val(default_value); 
     }); 
    }); 
} 

quindi utilizzare questo modo

$(document).ready(function(){ 
    $('input').ToggleInputValue(); 
})​ 
+0

Il valore non riappare se non è stato inserito nulla.hmm .. – user342391

+0

Aggiornato, fammi sapere se funziona. – RobertPitt

+0

strano ancora nulla – user342391

7

Non farlo in questo modo. Utilizzare uno script di filigrana jQuery: http://code.google.com/p/jquery-watermark/

$("input[name='kp1_description']").watermark("Enter Keypress Description");

Ci sono molte cose che devi rendere conto se lo fai manualmente. Ad esempio, cosa succede quando la casella di testo perde l'attenzione? Se non c'è alcun valore, vorresti leggere il tuo testo di aiuto. Se c'è, vorresti onorare quei cambiamenti.

solo più facile lasciare che gli altri fanno il lavoro pesante :)

+0

ma l'utilizzo di un'intera libreria per un'attività semplice non è l'idea migliore. – RobertPitt

+2

Vero, sono dell'opinione che questa ruota non debba essere reinventata. Ci sono molti scenari da considerare e l'uso della libreria può semplificarlo molto. Ha taggato la sua domanda con jQuery, quindi usare un plugin jQuery è probabilmente il modo più pragmatico per eseguire questa operazione. – clifgriffin

+0

+1 per il riutilizzo del codice. Alcuni problemi sono difficili e dovrebbero essere risolti da una biblioteca e non essere implementati male da ogni scimmia del codice del pianeta. Le persone sono particolarmente cattive su questo quando si tratta di javascript. – Sorpigal

6

Con HTML5 si può fare senza Javascript: basta usare placeholder invece di value. Penso che sia una bella aggiunta, ma ovviamente è necessario verificare prima la compatibilità del browser.

0

HTML:

<form method="post"> 
    <input type="text" id="customer" value="Username"/>  
    <input type="Submit" value="Login" class="rc" /> 
</form> 

codice Javascript:

<script> 
$('#customer').on({ 
    focus:function(){     
     if(this.value == 'Username') this.value = ''; 
    }, 
    blur:function(){ 
     if(this.value == '') this.value = 'Username'; 
    } 
}) 
</script> 

Questo è tutto, spero vi aiuterà.

1

var defaultForInput = "abc";

<input id="myTextInput" type="text" placeholder=defaultForInput />


Quando presentando il modulo, controllare se l'ingresso (id = "myTextInput") valore è la 'stringa vuota', in tal caso sostituirlo con (defaultForInput) .

3
$('input, textarea').each(function() { 
    var Input = $(this); 
    var default_value = Input.val(); 

    Input.focus(function() { 
     if(Input.val() == default_value) Input.val(""); 
    }).blur(function(){ 
     if(Input.val().length == 0) Input.val(default_value); 
    }); 
}); 
1

Il Super Duper Versione breve

$('#input_id').focus(function() { 
    $(this).val(""); 
}); 
3
<input type="text" id="anything" placeholder="enter keypress description"> 

Penso che questo aiuterà

0

Plain JavaScript:

(function() { 
    let input = document.querySelector ("input[name='kp1_description']"); 
    input.onfocus = function() { 
    this.placeholder = this.value; 
    this.value = ''; 
    }; 
})(); 

Ciò mantiene il valore nel il segnaposto invece di rimuoverlo completamente. Se non ti piace, rimuovi la linea del segnaposto.

Problemi correlati