2012-08-04 19 views
8

Ho creato un input in base al seguente codice.Il segnaposto non scompare dopo lo stato attivo in Chrome

<div> 
    <form id="me" runat="server"> 
    <input id="stuff" type="text" placeholder="Type here" runat="server" /> 
    </form> 
</div> 

Come previsto, quando inizio a digitare, il testo segnaposto scompare. Funziona come previsto nel browser di Burning Cat ma non nel browser Shiny Metal. Cosa lo causa (stili, tag del server, altre cose ...)? Cosa si può fare al riguardo?

risposta

10

Firefox e chrome (e safari) si comportano in modo diverso sui segnaposto HTML5. Se si desidera cromo scomparire i segnaposto sulla messa a fuoco, è possibile utilizzare seguente script:

$('input:text, textarea').each(function(){ 
    var $this = $(this); 
    $this.data('placeholder', $this.attr('placeholder')) 
     .focus(function(){$this.removeAttr('placeholder');}) 
     .blur(function(){$this.attr('placeholder', $this.data('placeholder'));}); 
}); 
+5

vorrei ritenere questo comportamento come un bug. Voglio dire, se ho bisogno di aggiungere qualche JS per far sparire il segnaposto, deve essere definito un work-around. O c'è una ragione valida per cui si comporta in questo modo? –

+6

Adoro il modo in cui Chrome fa segnaposto. Ti consente di utilizzare il testo segnaposto come etichette dei campi modulo ANCHE se la pagina viene caricata su uno dei campi. – xamde

+3

Il selettore dovrebbe essere '$ ('[segnaposto]')' perché ci sono molti tipi di input che non sono text o textarea (email, ecc.) E possono avere segnaposto. Anche il nuovo jQuery non apprezza (sfortunatamente) il selettore ': text'. – Rudy

0

È possibile utilizzare questo plugin jQuery segnaposto: placeholderFix. Con questo plug-in, il tag placeholder funzionerà allo stesso modo in tutti i browser, anche nei browser che non lo supportano.

28

mi sono imbattuto lo stesso problema di oggi e mi si avvicinò con un puro-CSS soluzione mod:

input:focus::-webkit-input-placeholder { 
    color: transparent; 
} 
+4

+1 per la creatività, ma devo precisare che - mentre io ** piace davvero ** l'approccio - non è una soluzione. È un work-around. Continuo a sostenere che si tratta di un bug in Chrome. :) –

+0

Inoltre, hai perso la sintassi per il tag della lingua. Dovrebbe essere * lang-css * all'interno e due trattini "* - *" alla fine. Ho corretto la sytax e ora la tua risposta sembra ancora migliore! –

+0

Sono completamente d'accordo. Ho preso in considerazione l'uso della parola * hack * invece di * solution *, ma per qualche motivo è andato con quest'ultimo. Ora ho modificato il post per riflettere questo. Ho provato diverse varianti del tag di sintassi ma nulla sembrava aver funzionato. Ora penso che potrebbe aver funzionato ma non l'ho notato perché i colori sono entrambi molto scuri. Grazie per l'aiuto. –

Problemi correlati