I have a basic registration form. For styling the input fields, my css code is below, but I'm using code from this demo from codrops: http://tympanus.net/codrops/2015/01/08/inspiration-text-input-effects/
I'm using the second example in particular (called Hoshi). Right now, when you click on the input field, a blue bottom border is animated in.
I am using Jquery validate plugin, so my js script code is the one below. I'm having trouble changing the css of errors. For example, when the user forgets to fill out a field but clicks submit, I want the input field to have a border bottom of red until its validated. But I have absolutely no idea how to achieve that. Any insight is appreciated! Thanks!
$(document).ready(function(){
$('#tbi-form').validate({
rules: {
First_Name: {
required: true,
maxlength: 50
},
Last_Name: {
required: true
},
Phone: {
required: true
},
zip: {
required: true,
maxlength: 20,
digits: true
},
birth_month: {
required: true
},
Email: {
required: true,
maxlength: 100
},
Email_Confirm: {
required: true,
equalTo: "#Email"
},
Referral: {
required: true,
maxlength: 20
}
},
messages: {
First_Name: "Please enter your first name",
Last_Name: "Please enter your last name",
Email: "Please enter your Email",
Email_Confirm: {
required: "Please enter your email",
equalTo: "Please make sure the email you entered is accurate"
}
},
errorElement: 'div'
});
});
.input__field--form {
margin-top: 1em;
padding: 1.5em 0em 1.2em 0.2em;
width: 100%;
background: transparent;
color: #595F6E;
font-size: 85.25%;
}
.input__label--form {
position: absolute;
bottom: 0;
left: 0;
padding: 0 0.25em;
width: 100%;
height: calc(100% - 1em);
text-align: left;
pointer-events: none;
}
.input__label-content--form {
position: absolute;
}
.input__label--form::before,
.input__label--form::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: calc(100% - 5px);
border-bottom: 1px solid #B9C1CA;
}
.input__label--form::after {
margin-top: 0px;
border-bottom: 4px solid red;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
-webkit-transition: -webkit-transform 0.3s;
transition: transform 0.3s;
}
.input__label--form-color-1::after {
border-color: #00A0E2;
}
.input__field--form:focus + .input__label--form::after,
.input--filled .input__label--form::after {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.input__field--form:focus + .input__label--form .input__label-content--form,
.input--filled .input__label-content--form {
-webkit-animation: anim-1 0.3s forwards;
animation: anim-1 0.3s forwards;
}
@-webkit-keyframes anim-1 {
50% {
opacity: 0;
-webkit-transform: translate3d(1em, 0, 0);
transform: translate3d(1em, 0, 0);
}
51% {
opacity: 0;
-webkit-transform: translate3d(-1em, -40%, 0);
transform: translate3d(-1em, -40%, 0);
}
100% {
opacity: 1;
-webkit-transform: translate3d(0, -40%, 0);
transform: translate3d(0, -40%, 0);
}
}
@keyframes anim-1 {
50% {
opacity: 0;
-webkit-transform: translate3d(1em, 0, 0);
transform: translate3d(1em, 0, 0);
}
51% {
opacity: 0;
-webkit-transform: translate3d(-1em, -40%, 0);
transform: translate3d(-1em, -40%, 0);
}
100% {
opacity: 1;
-webkit-transform: translate3d(0, -40%, 0);
transform: translate3d(0, -40%, 0);
}
}