The nice input with dots that you fill. One of my YouTube subscribers asked me how to do that you can find that on some websites this cool thing. And I was wondering how they do that. Some messed up tricks and wacks and we got this. It also works on the phone
Created
March 18, 2019 02:06
-
-
Save jocubeit/3d6f346a39ac2c32261fd6b969742dc9 to your computer and use it in GitHub Desktop.
Dot Digit Input
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.container | |
//- h1 Dot digit input | |
//- p Type the code that you received in your e-mail below: | |
.inputs#inputs | |
input(maxlength="2" placeholder="•" value="") | |
input(maxlength="2" placeholder="•" value="") | |
input(maxlength="2" placeholder="•" value="") | |
input(maxlength="1" placeholder="•" value="") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function processInput(holder){ | |
var elements = holder.children(), //taking the "kids" of the parent | |
str = ""; //unnecesary || added for some future mods | |
elements.each(function(e){ //iterates through each element | |
var val = $(this).val().replace(/\D/,""), //taking the value and parsing it. Returns string without changing the value. | |
focused = $(this).is(":focus"), //checks if the current element in the iteration is focused | |
parseGate = false; | |
val.length==1?parseGate=false:parseGate=true; | |
/*a fix that doesn't allow the cursor to jump | |
to another field even if input was parsed | |
and nothing was added to the input*/ | |
$(this).val(val); //applying parsed value. | |
if(parseGate&&val.length>1){ //Takes you to another input | |
var exist = elements[e+1]?true:false; //checks if there is input ahead | |
exist&&val[1]?( //if so then | |
elements[e+1].disabled=false, | |
elements[e+1].value=val[1], //sends the last character to the next input | |
elements[e].value=val[0], //clears the last character of this input | |
elements[e+1].focus() //sends the focus to the next input | |
):void 0; | |
} else if(parseGate&&focused&&val.length==0){ //if the input was REMOVING the character, then | |
var exist = elements[e-1]?true:false; //checks if there is an input before | |
if(exist) elements[e-1].focus(); //sends the focus back to the previous input | |
} | |
val==""?str+=" ":str+=val; | |
}); | |
} | |
$("#inputs").on('input', function(){processInput($(this))}); //still wonder how it worked out. But we are adding input listener to the parent... (omg, jquery is so smart...); | |
$("#inputs").on('click', function(e) { //making so that if human focuses on the wrong input (not first) it will move the focus to a first empty one. | |
var els = $(this).children(), | |
str = ""; | |
els.each(function(e){ | |
var focus = $(this).is(":focus"); | |
$this = $(this); | |
while($this.prev().val()==""){ | |
$this.prev().focus(); | |
$this = $this.prev(); | |
} | |
}) | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700') | |
$fontsize: 60px //code | |
$placeholderColor: lighten(#3498db, 20%) | |
body | |
background-color: #2980b9 | |
background-image: linear-gradient(45deg, darken(#2980b9, 10%), #3498db) | |
background-size: 100% | |
background-position: 0 0 | |
background-attachment: fixed | |
padding: 10px | |
height: 100vh | |
color: #fff | |
font-family: "Open Sans", sans-serif | |
box-sizing: border-box | |
overflow: hidden | |
input::-webkit-input-placeholder | |
color: $placeholderColor !important | |
input:-moz-placeholder | |
color: $placeholderColor !important | |
input::-moz-placeholder /* Firefox 19+ */ | |
color: $placeholderColor !important | |
input:-ms-input-placeholder | |
color: $placeholderColor !important | |
.container | |
width: 90% | |
height: 100vh | |
margin: 0 auto | |
display: flex | |
flex-direction: column | |
justify-content: center | |
align-items: center | |
p | |
font-size: 24px | |
font-weight: 100 | |
h1 | |
font-size: 32px | |
font-weight: 600 | |
.inputs | |
input | |
width: #{$fontsize/(3/2)+10} | |
height: $fontsize | |
line-height: 100% | |
background-color: transparent | |
border: 0 | |
outline: 0 | |
color: white | |
font-size: $fontsize | |
word-spacing: 0px | |
overflow: hidden | |
text-align: center | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment