Nie mogę ustalić, co jest nie tak z moim znacznikiem, ale symbol zastępczy pola tekstowego nie pojawi się. Wygląda na to, że może być przykryty pustymi spacjami i tabulatorami. Gdy skupisz się na obszarze tekstowym i usuniesz miejsce, w którym znajduje się kursor, a następnie opuścisz obszar tekstowy, pojawi się odpowiedni symbol zastępczy.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<body>
<form action="message.php" method="post" id="message_form">
<fieldset>
<input type="email" name="email" id="email" title="Email address"
maxlength="40"
placeholder="Email Address"
autocomplete="off" required />
<br />
<input type="text"
name="subject"
id="subject" title="Subject"
maxlength="60" placeholder="Subject" autocomplete="off" required />
<br />
<textarea name="message"
id="message"
title="Message"
cols="30"
rows="5"
maxlength="100"
placeholder="Message" required>
</textarea>
<br />
<input type="submit" value="Send" id="submit"/>
</fieldset>
</form>
</body>
<script>
$(document).ready(function() {
$('#message_form').html5form({
allBrowsers : true,
responseDiv : '#response',
messages: 'en',
messages: 'es',
method : 'GET',
colorOn :'#d2d2d2',
colorOff :'#000'
}
);
});
</script>
</html>
Odpowiedzi:
Ten zawsze był gotcha dla mnie i wielu innych. Krótko mówiąc, otwierające i zamykające znaczniki dla
<textarea>
elementu muszą znajdować się w tym samym wierszu, w przeciwnym razie zajmie go znak nowej linii. Symbol zastępczy nie będzie zatem wyświetlany, ponieważ obszar wprowadzania zawiera treść (znak nowej linii to technicznie poprawna treść).Dobry:
Zły:
Aktualizacja (2020)
To już nie jest prawda , zgodnie ze specyfikacją parsowania HTML5:
Nadal możesz mieć problemy, jeśli edytor nalega na zakończenie linii za pomocą CRLF.
źródło
.trim
metody jQuery .$('textarea'),each(function(i) { if ($.trim($(this).text()) == '') $(this).text('').trigger('blur'); });
/>
zamiast>
. Przykład:$('body').html('<textarea placeholder="test" />');
<textarea>
, oznacza to, że obszar tekstowy nie jest pusty, więc nie ma zastosowania dla symbolu zastępczego. :)Usuń wszystkie spacje i znaki podziału między znacznikami
<textarea>
otwierającymi i zamykającymi</textarea>
.źródło
ponieważ jest gdzieś przestrzeń. Używałem jsfiddle, a po tagu była spacja. Po usunięciu miejsca zaczęło działać
źródło
Cóż, technicznie rzecz biorąc, nie musi znajdować się w tym samym wierszu, o ile nie ma znaku między końcowym „>” znacznikiem początkowym a początkowym „<” znacznikiem końcowym. Oznacza to, że musisz zakończyć
...></textarea>
jak w poniższym przykładzie:źródło
Wiem, że na ten post (bardzo dobrze) odpowiedział Aquarelle, ale na wypadek, gdyby ktoś miał ten problem z innymi formularzami znaczników bez tekstu, takimi jak dane wejściowe, zostawię to tutaj:
Jeśli masz w formularzu dane wejściowe, a symbol zastępczy nie jest wyświetlany, ponieważ na początku występuje biała spacja, może to być spowodowane atrybutem „wartość”. Jeśli używasz zmiennych do wypełnienia wartości wejściowej, sprawdź, czy między przecinkami a zmiennymi nie ma białych znaków.
przykład użycia twig do symfony frameworka PHP:
W tym przypadku tag między {{}} jest zmienną, upewnij się tylko, że nie pozostawiasz spacji między przecinkami, ponieważ biały znak jest również prawidłowym znakiem.
źródło
użyj
<textarea></textarea>
zamiast zostawiać spację między otwierającym i zamykającym znacznikiem jako<textarea> </textarea>
źródło
Między otworem a tagiem zamykającym w naszym tagu textarea sprawa nie powinna być spacja lub znak nowej linii lub dowolny tekst (wartość).
Jeśli jest spacja, znak nowej linii lub dowolny tekst, jest to uważane za wartość, która zastępuje symbol zastępczy.
źródło
Miałem ten sam problem, używając tylko
.pug
pliku (podobnego do.jade
). Po zakończeniu moich nawiasów zamykających zdałem sobie sprawę, że jest to również kwestia miejsca . W moim przykładzie musisz zaznaczyć tekst po,(placeholder="YOUR MESSAGE")
aby zobaczyć:PRZED:
PO:
źródło
Pytanie brzmi więc, jak wstępnie wypełnić element textarea? XYZ, otrzymasz:
Główny problem polega na tym, że w elemencie textarea mimowolnie wypełniamy go spacją.
źródło