Otrzymałem ten sam komunikat o błędzie podczas próby wykonania tego w przeglądarce Firefox 5.
Rozwiązałem go za pomocą poniższego kodu:
<script type="text/javascript" language="JavaScript">
$(document).ready(function()
{
var passfield = document.getElementById('password_field_id');
passfield.type = 'text';
});
function focusCheckDefaultValue(field, type, defaultValue)
{
if (field.value == defaultValue)
{
field.value = '';
}
if (type == 'pass')
{
field.type = 'password';
}
}
function blurCheckDefaultValue(field, type, defaultValue)
{
if (field.value == '')
{
field.value = defaultValue;
}
if (type == 'pass' && field.value == defaultValue)
{
field.type = 'text';
}
else if (type == 'pass' && field.value != defaultValue)
{
field.type = 'password';
}
}
</script>
Aby z niego skorzystać, wystarczy ustawić atrybuty onFocus i onBlur swoich pól na coś takiego:
<input type="text" value="Username" name="username" id="username"
onFocus="javascript:focusCheckDefaultValue(this, '', 'Username -OR- Email Address');"
onBlur="javascript:blurCheckDefaultValue(this, '', 'Username -OR- Email Address');">
<input type="password" value="Password" name="pass" id="pass"
onFocus="javascript:focusCheckDefaultValue(this, 'pass', 'Password');"
onBlur="javascript:blurCheckDefaultValue(this, 'pass', 'Password');">
Używam tego również w polu nazwy użytkownika, więc przełącza wartość domyślną. Po prostu ustaw drugi parametr funkcji na „”, kiedy ją wywołujesz.
Warto również zauważyć, że domyślnym typem pola mojego hasła jest hasło, na wypadek, gdyby użytkownik nie włączył javascript lub jeśli coś pójdzie nie tak, jego hasło jest nadal chronione.
Funkcja $ (dokument) .ready to jQuery i ładuje się po zakończeniu ładowania dokumentu. To następnie zmienia pole hasła na pole tekstowe. Oczywiście będziesz musiał zmienić 'password_field_id' na identyfikator pola swojego hasła.
Zachęcamy do korzystania i modyfikowania kodu!
Mam nadzieję, że to pomoże wszystkim, którzy mieli ten sam problem, co ja :)
- CJ Kent
EDYCJA: Dobre rozwiązanie, ale nie absolutne. Działa na FF8 i IE8, ALE nie w pełni w Chrome (16.0.912.75 ver). Chrome nie wyświetla tekstu hasła podczas ładowania strony. Ponadto - FF wyświetli twoje hasło po włączeniu autouzupełniania.