Sto provando a scrivere un semplice script che emula i segnaposti in modo che possa utilizzare l'effetto su tutti i browser. Quello che ho creato è un modulo con una span con del testo che ho assolutamente posizionato sopra l'input. Questo agisce come il testo segnaposto.Utilizzo di Jquery each() e children() per attraversare e nascondere/mettere a fuoco gli elementi del modulo
Ora il Jquery è abbastanza semplice, e se scrivo singole funzioni per ciascun elemento di input, posso farlo funzionare bene, ma è ridondante. Quello che sto cercando di fare è usare each() e children() e le classi in modo che io possa applicare questo a qualsiasi forma che voglio. Ecco il codice:
<form id="signupForm" name="signupForm">
<span class="inputSpan">
<input value="" class="input" name="fistName" id="firstName" type="text" />
<span class="inputText" id="inputText">First name</span>
</span>
<span class="inputSpan">
<input value="" class="input" name="lastName" id="lastName" type="text" />
<span class="inputText" id="inputText">Last name</span>
</span>
</form>
<script type="text/javascript">
$('.inputSpan').each(function() {
$(this).children('.inputText').click(function(index) {
$(this).children('.inputText').hide();
$(this).children('.input').focus();
});
});
</script>
Se metto una relazione d'allarme all'interno ogni funzione, funziona, ma non è di eseguire il resto di esso che è quello di nascondere la classe figlia '.inputText' e mettere a fuoco l'altro bambino '.input' Immagino che abbia qualcosa a che fare con il fatto di non essere in grado di chiamare $ (this) di nuovo una volta all'interno di una funzione. Qualcuno ha qualche idea su come posso farlo funzionare?
Risolto !!! Grazie Matt Ecco il codice di lavoro finale con la funzione per riportare il testo segnaposto sul posto se l'input è lasciato vuoto.
<script type="text/javascript">
$('.inputSpan').each(function() {
var $input = $(this)
$(this).children('.inputText').click(function(index) {
$input.children('.inputText').hide();
$input.children('.input').focus();
});
$(this).children('.input').focusout(function() {
if ($input.children('.input').attr('value') == '') {
$input.children('.inputText').show();
}
});
});
</script>
@Jacob ... utilizzando jQuery.each() non è necessario –