2012-12-07 15 views
9

Zastanawiam się nad dziwnym zachowaniem w Internet Explorerze 10. Na mojej stronie dodaję tekst z jquery, w tym atrybut zastępczy. Coś takiego:HTML5 Symbol zastępczy na Textarea za pośrednictwem jQuery w IE10

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

Atrybut zastępczy działa idealnie dobrze w IE10 zwykle ... z wyjątkiem tego przypadku. Testowałem go elementy są już na stronie, w tym skrzypce:

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

Jak widać, jedna textarea (jeden dodany dynamicznie) traktuje zastępczy atrybutu jak rzeczywistej wartości - najbardziej irytujące zachowanie I można sobie wyobrazić ...

Czy ktoś wie o tym wpływie, a może również o obejściu problemu? Z góry dziękuję!

EDIT

ja też sobie sprawę, że działa zgodnie z oczekiwaniami, po usunięciu wartości ręcznie. Możesz go również usunąć za pomocą jQuery.val(''), aby działało. Naprawdę jestem zdezorientowany tym zachowaniem ... Ale to powinno być odpowiednie "obejście". Zobacz ten skrzypce: http://jsfiddle.net/Aqnt5/5/

+1

Właśnie napisałem podobne pytanie: http://stackoverflow.com/questions/23375208/ie11-jquery-1-8-3-dynamically-added-textarea-z-placeholder-has-text-set -to/23375209 # 23375209. Problem zniknie, jeśli ** zaktualizujesz jQuery ** do wersji **> 1.8.3 **. – Oliver

Odpowiedz

18

Niestety nie mam IE10 to sprawdzić, ale to działa wszędzie;

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

I tylko dwukrotnie sprawdzić, czy DOCTYPE jest poprawna dla HTML5

Oto jedno-liner (z podziałem na tu kilka linii, aby uczynić go bardziej widoczne), że można to zrobić również -

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

dzięki Jay! Twój sposób ustawiania symbolu zastępczego później działa idealnie dobrze w IE10. Ponadto znalazłem inne obejście, usuwając wartość z jQuery (zobacz moją odpowiedź). –

-1

placeholder jest zarezerwowanym atrybutem HTML5, ponieważ HTML5 nie jest jeszcze określona (i zmiany może się zdarzyć do niego), Wtedy nie wszystkie przeglądarki obsługują wszystkie funkcje (i nie pozwól mi zacząć o IE)

dla odniesienia: http://www.w3schools.com/html5/att_textarea_placeholder.asp

+1

dzięki Dementic.Wiem o niekompatybilności z IE - nadal atrybut zastępczy działa na IE10 przez większość czasu. to po prostu, kiedy wstawiam go przez jQuery, to nie jest traktowane poprawnie. Zastanawiam się, co naprawdę robi różnicę ... –

+0

IE ma tendencję do posiadania wielu błędów, gdy próbujesz zrobić "skróty". to z mojego osobistego doświadczenia. – Dementic

3

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

Możesz usunąć wartości z jQuery, by zachowywał się poprawnie:

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

Nie wiem dlaczego włożyli zastępczy jako wartość w pierwszej kolejności ...

+0

Nie byłoby to zalecane. nawet dlatego, że działa, odpowiedź @Bay Blanchard jest właściwym sposobem na to. – Dementic

Powiązane problemy