2012-12-07 8 views
9

Mi chiedevo un comportamento strano in Internet Explorer 10. Nella mia pagina, sto aggiungendo una textarea con jquery, incluso un attributo segnaposto. Qualcosa di simile a questo:Attributo segnaposto HTML5 su Textarea tramite jQuery in IE10

$('body').append($('<textarea placeholder="Placeholder..."></textarea>')); 

L'attributo segnaposto funziona perfettamente bene in IE10 solito ... se non in questo caso. L'ho provato con gli elementi di essere già sulla pagina in questo violino:

http://jsfiddle.net/Aqnt5/1/

Come si può vedere, una textarea (quello aggiunto in modo dinamico) tratta attribuiscono il segnaposto come un valore effettivo - il comportamento più fastidioso I potrebbe immaginare ...

Qualcuno sa di questo effetto e forse anche una soluzione? Grazie in anticipo!

EDIT

ho anche appena realizzato che funziona come previsto, dopo aver rimosso il valore a mano. Puoi rimuoverlo tramite jQuery.val('') per farlo funzionare. Sono davvero confuso da questo comportamento ... Ma questa dovrebbe essere una soluzione adatta. Vedere questo violino: http://jsfiddle.net/Aqnt5/5/

+1

Ho appena postato una domanda simile qui: http://stackoverflow.com/questions/23375208/ie11-jquery-1-8-3-dynamically-added-textarea-with-placeholder-has-text-set -per/23375209 # 23375209. Il problema scompare se ** aggiorni jQuery ** a una versione **> 1.8.3 **. – Oliver

risposta

18

Purtroppo non ho IE10 per testare questo, ma questo funziona ovunque;

$('body').append('<textarea></textarea>'); 
$('textarea').attr('placeholder', 'placeholder'); 

E basta fare doppio controllare che il vostro DOCTYPE è corretto per HTML5

Ecco una battuta (diviso in diverse righe qui per renderlo più visibile), che si può anche fare -

$('body') 
    .append('<textarea></textarea>') 
    .find('textarea') 
    .attr('placeholder', 'placeholder'); 
+2

grazie Jay! Il tuo modo di impostare il segnaposto in seguito funziona perfettamente in IE10. Inoltre, ho trovato un'altra soluzione rimuovendo il valore con jQuery (vedi la mia risposta). –

-1

placeholder è un attributo riservata di HTML5, dal momento che HTML5 non è ancora definito (e le modifiche potrebbe accadere ad esso), Allora non tutti i browser supportano tutte le funzioni (e non lo vorrei iniziare su IE)

per riferimento: http://www.w3schools.com/html5/att_textarea_placeholder.asp

+1

grazie Demenziale.Conosco l'incompatibilità con IE - tuttavia, l'attributo segnaposto funziona per IE10 il più delle volte. è solo, quando lo inserisco tramite jQuery, non viene trattato correttamente. Mi stavo chiedendo cosa effettivamente fa la differenza ... –

+0

IE tende ad avere molti bug quando si sta provando a fare alcune "scorciatoie". questo è dalla mia esperienza personale. – Dementic

3

Fiddle: http://jsfiddle.net/Aqnt5/5/

è possibile rimuovere il valore con jQuery, per rendere comportarsi correttamente:

$('body').append($('<textarea placeholder="Placeholder..."></textarea>').val('')); 

Non so perché hanno messo il segnaposto come un valore, in primo luogo ...

+0

Questo non sarebbe raccomandato. anche a causa del suo funzionamento, la risposta di @Jay Blanchard è il modo corretto per farlo. – Dementic