Sto sviluppando una piccola funzione per il mio sito in cui un modulo di accesso viene mostrato automaticamente nella barra di navigazione quando il sito è aperto, ma solo se un alcuni cookie non sono stati impostati. Quindi, dopo 10 secondi, il modulo scomparirà.nasconde il modulo di accesso dopo 10 secondi se il cookie non è impostato e nessun input è selezionato
Si suppone anche che rimanga aperto se l'utente ha selezionato uno degli ingressi modulo O se uno degli ingressi contiene contenuto. (#user-pest
o #pass-pest
).
La maggior parte funziona come dovrebbe, tuttavia, anche quando uno degli ingressi è selezionato o contiene contenuti, una volta trascorsi 10 secondi, il modulo scomparirà dalla pagina.
che segue è la JavaScript (e jQuery) il codice che sto usando (aggiornamento).
$(document).ready(function(){
// hide sign in form
function hideForm(){ // function for updating elements
$("#darknet-login-nav").css("display", "none");
$(".index-outer").css("height", "100px");
$(".index-inner").css("width", "438px");
$(".index-inner").css("top", "-10px");
$("#darknet-mast").css("font-size", "97px");
}
function hideFormSet(){ // function used for updating elements and setting cookie
hideForm();
document.cookie = "signinNav=set";
}
var checkDisplayed = getCookie("signinNav"); // get cookie contents
if(checkDisplayed == "set"){
hideForm(); // if cookie is set, hide the form
} else { // if it isn't
var hideInterval = setInterval(hideFormSet, 10000); // after 10 seconds, call hideFormSet function
if($("#user-pest").is(':focus') || $("#pass-pest").is(':focus')){
clearInterval(hideInterval); // if one of the inputs are focused on, stop the interval
} else {
hideInterval; // if they aren't focused, start the interval
}
}
});
e questo è il mio markup semplificato.
<div class="darknet-nav-login-form" id="darknet-login-nav">
<form action="" method="post">
<input type="text" name="username" id="user-pest" placeholder="Username" autocomplete="off"><br>
<input type="password" name="password" id="pass-pest" placeholder="Password" autocomplete="off"><br>
</form>
</div>
Sono ancora molto nuovo in JavaScript, quindi qualsiasi suggerimento e correzione sarà molto apprezzato.
MODIFICA: si prega di controllare il mio sopra codice aggiornato.
Anche quando gli ingressi sono focalizzati, l'intervallo continuerà comunque, anziché arrestarsi.
Grazie
modi per migliorare la manutenibilità, è necessario convertire il CSS-metodo di 5 chiamate a una funzione che si chiama in modo che non si dispone di duplicare lo stesso codice. – Esko
@Esko come lo farei? –
'function myFunction() {$ (" # darknet-login-nav "). Css (" display "," none "); $ (". Index-outer"). Css ("height", "100px"); } 'e poi myFunction(); quando vuoi chiamarlo – Esko