How can I focus the next input once the previous input has reached its maxlength value?
a: <input type="text" maxlength="5" /> b: <input type="text" maxlength="5" /> c: <input type="text" maxlength="5" />
If a user pastes text that is greater than the maxlength, ideally it should spill into the next input.
jsFiddle: http://jsfiddle.net/4m5fg/1/
I must stress that I do not want to use a plugin, as I'd much rather learn the logic behind this, than use something that already exists. Thanks for understanding.
To check if an input field has focus with JavaScript, we can use the document. activeElement property to get the element in focus. to add an input. to check if the input element is focused.
No jQuery used and is a very clean implementation:
http://jsfiddle.net/4m5fg/5/
<div class="container"> a: <input type="text" maxlength="5" /> b: <input type="text" maxlength="5" /> c: <input type="text" maxlength="5" /> </div>
..
var container = document.getElementsByClassName("container")[0]; container.onkeyup = function(e) { var target = e.srcElement || e.target; var maxLength = parseInt(target.attributes["maxlength"].value, 10); var myLength = target.value.length; if (myLength >= maxLength) { var next = target; while (next = next.nextElementSibling) { if (next == null) break; if (next.tagName.toLowerCase() === "input") { next.focus(); break; } } } // Move to previous field if empty (user pressed backspace) else if (myLength === 0) { var previous = target; while (previous = previous.previousElementSibling) { if (previous == null) break; if (previous.tagName.toLowerCase() === "input") { previous.focus(); break; } } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With