Попробуйте использовать атрибут-заполнитель HTML5:
<input type="text" aria-required="true" tabindex="1" size="22"
placeholder="visitor" id="author" name="author">
Хотя поддержка браузера еще не на 100%, это даст вам стандартный способ достичь того, чего вы пытаетесь достичь, не проходя через ненужныеhoops.
Другая вещь, которую вы можете попробовать, это наложить элемент ввода поверх некоторого текста и сделать его прозрачным / полупрозрачным, когда он не в фокусе, и непрозрачным, когда он в фокусе / заполнен.
На сегодняшний день, Страница входа Tumblr использует этот трюк:
<div class="input_wrapper" id="">
<label for="user_password">Password</label>
<input type="password" id="user_password" name="user[password]" data-validation-type="password" value="">
</div>
С помощью магии CSS это становится:
![enter image description here](https://i.stack.imgur.com/X17vu.jpg)