2015-10-19 6 views
8

Ho una pagina di accesso con HTML e CSS. È perfettamente funzionante e tutto il resto. Tuttavia, quando l'accesso fallisce, voglio che il modulo di login si scuota. Come faccio a farlo tremare. In questo momento, non fa nulla.Come scuotere il modulo di login per errore

Ecco il mio codice HTML/CSS/JavaScript. Se è necessario più codice, per favore dimmelo.

HTML

<div class="input"> 
    <c:if test="${not empty error}"> 
     <div class="error">${error}</div> 
    </c:if> 
    <c:if test="${not empty msg}"> 
     <div class="msg">${msg}</div> 
    </c:if> 
    <div class="email"> 
     <input type="text" name="username" 
      placeholder="[email protected]"></input> 
    </div> 
    <div class="password"> 
     <input type="password" name="password" placeholder="*********"></input> 
    </div> 
</div> 

<input class="login_btn" type="submit" name="submit" value=""> 

CSS

.container .login_component .login_wrap .login_wp .input input { 
    width: 290px; 
    height: 50px; 
    padding-left: 20px; 
    font-size: 15px; 
    border: none; 
    background: transparent; 
} 

.container .login_component .login_wrap .login_wp .input .email { 
    height: 53px; 
    margin-top: 20px; 
    background: 
     url("http://xiilab.mynetgear.com:81/c.hwang/rems/images/login/input.png"); 
    background-repeat: no-repeat; 
    background-position: center center; 
} 

.container .login_component .login_wrap .login_wp .input .password { 
    height: 53px; 
    margin-top: 20px; 
    background: 
     url("http://xiilab.mynetgear.com:81/c.hwang/rems/images/login/input.png"); 
    background-repeat: no-repeat; 
    background-position: center center; 
} 

.container .login_component .login_wrap .login_wp .login_btn { 
    height: 55px; 
    margin-top: 30px; 
    background: 
     url("http://xiilab.mynetgear.com:81/c.hwang/rems/images/login/login_btn.png"); 
    background-repeat: no-repeat; 
    background-position: center center; 
    border: none; 
    width: 310px; 
} 

JavaScript

$('input[type=submit]').on('click', function(e){ 
     e.preventDefault(); 
     $('.input').addClass('ahashakeheartache'); 
}); 

$('.input').on('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(e){ 
     $('.input').delay(200).removeClass('ahashakeheartache'); 
}); 
+0

Potrebbe essere più facile per le persone a rispondere, senza dover scavare per un grande pezzo di codice prima. Se il codice * real * non è realmente necessario, potrebbe essere meglio dare un esempio molto semplice o addirittura lasciare il codice completamente. :) – JakeTheSnake

risposta

6

Utilizzo semplice animazione in jQuery includono l'interfaccia utente jquery

<script src="//code.jquery.com/jquery-1.10.2.js"></script> 
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 

    $(document).on('click', '#yoursubmitdiv', function(){ 

    //code if login fails 

     $("#yourloginfield").effect("shake"); // this will shake your div 



    }); 
+1

Non pubblicare risposte jQuery a domande non jQuery. –

+0

@JosiahKeller Sciocchezze. Guarda l'esempio JavaScript specificato. Chiaramente JQuery. Non è che questa risposta sia fuori luogo; la domanda è etichettata in modo errato. –

+0

@ Two-BitAlchemist Hai ragione. Modificherò le mie critiche su "Non pubblicare le risposte dell'interfaccia utente di jQuery alle domande di vanilla jQuery". –

9

Se si utilizza animate.css è possibile creare tale effetto. Ecco il progetto github in cui è possibile scaricare il codice sorgente. Ci sono altri effetti che puoi controllare anche tu.

Codice in agitazione da animate.css:

.animated { 
    -webkit-animation-duration: 1s; 
    animation-duration: 1s; 
    -webkit-animation-fill-mode: both; 
    animation-fill-mode: both; 
} 

.animated.infinite { 
    -webkit-animation-iteration-count: infinite; 
    animation-iteration-count: infinite; 
} 

.animated.hinge { 
    -webkit-animation-duration: 2s; 
    animation-duration: 2s; 
} 

.animated.bounceIn, 
.animated.bounceOut { 
    -webkit-animation-duration: .75s; 
    animation-duration: .75s; 
} 

.animated.flipOutX, 
.animated.flipOutY { 
    -webkit-animation-duration: .75s; 
    animation-duration: .75s; 
} 

@-webkit-keyframes shake { 
    from, to { 
    -webkit-transform: translate3d(0, 0, 0); 
    transform: translate3d(0, 0, 0); 
    } 

    10%, 30%, 50%, 70%, 90% { 
    -webkit-transform: translate3d(-10px, 0, 0); 
    transform: translate3d(-10px, 0, 0); 
    } 

    20%, 40%, 60%, 80% { 
    -webkit-transform: translate3d(10px, 0, 0); 
    transform: translate3d(10px, 0, 0); 
    } 
} 

@keyframes shake { 
    from, to { 
    -webkit-transform: translate3d(0, 0, 0); 
    transform: translate3d(0, 0, 0); 
    } 

    10%, 30%, 50%, 70%, 90% { 
    -webkit-transform: translate3d(-10px, 0, 0); 
    transform: translate3d(-10px, 0, 0); 
    } 

    20%, 40%, 60%, 80% { 
    -webkit-transform: translate3d(10px, 0, 0); 
    transform: translate3d(10px, 0, 0); 
    } 
} 

.shake { 
    -webkit-animation-name: shake; 
    animation-name: shake; 
} 

JS

$(document).ready(function(){ 
    $('.submit').click(function(e){ 
     // Code to check login 
     // If fail 
     $('.input').addClass('animated shake'); 
    }); 
}) 
+0

Scusa, sono un Java Dev quindi non conosco molto sull'HTML. Potresti aiutarmi a usare questo codice e implementarlo nel mio? – bmarkham

+0

@bmarkham Nel tuo css devi aggiungere animate.css e poi aggiungere la classe animata e scuotere. Quando controlli se la password è corretta o errata puoi aggiungere la classe shake o altre classi da animated.css. Vedi la risposta modificata –

+0

Copia il codice per scuotere da animate.css sopra, e aggiungi la classe "shake" al div che contiene il tuo login quando l'accesso fallisce – diegorp

3

vorrei davvero consigliare di utilizzare pianura Javascript qui, mantenere le cose semplici ma allo stesso non troppo semplice. Non solo shake e non 50 righe di codice. Si prega di chiedere se qualcosa non è chiaro con il codice, ha cercato di tenerlo il più compatto possibile.

var box1Left1 = 100, box1Left2, keepShaking = true; 
 
var originalLeftPos = parseInt(document.getElementById("box1").style.left); 
 
    
 
setTimeout(stopShake, 1000); //Shake for how long 
 
function stopShake() { keepShaking = false; } 
 
    
 
setInterval(shake, 10); //Set shorter interval for faster shake 
 
function shake() { 
 
    if (keepShaking == true) { 
 
    if (box1Left1 < originalLeftPos + 5) { // "+5" = The shake distance. Go right. 
 
     box1Left1++; 
 
     document.getElementById("box1").style.left = box1Left1 + "px"; 
 
     box1Left2 = box1Left1; 
 
    } 
 
    if (box1Left1 >= (originalLeftPos + 5)) { // Go left. 
 
     box1Left2--; 
 
     document.getElementById("box1").style.left = box1Left2 + "px"; 
 
    } 
 
    if(box1Left2 == originalLeftPos) { box1Left1 = box1Left2; } // Go Right Again 
 
    } 
 
}
<div id="box1" style="position:absolute; top: 10px; left: 100px; width: 100px; height: 50px; background-color: #aa39fc;"> 
 
    Incorrect Password 
 
</div>

+0

Non sono sicuro se questo codice scuote quando faccio clic sul pulsante di accesso. – bmarkham

+0

@bmarkham Non lo farà, questo è solo un esempio. Se stavi cercando qualcosa da copiare e incollare, penso che tu abbia un approccio leggermente distorto sull'aiuto che ottieni. – JakeTheSnake

+0

No, sto solo cercando un aiuto che possa essere applicato a tutti i miei problemi, non solo uno. – bmarkham