2016-03-01 4 views
5

Ho visto forme HTML in cui il cursore si sposta da un campo di input a un altro automaticamente e utilizza il backspace per spostarsi nel campo precedente. È utile in situazioni come quando è necessario incollare un numero seriale che si estende su diversi campi di input, o come digitare o incollare il numero che viene preso in più input sul campo.Messa a fuoco next/prev input su maxlength reached o backspace keypress

$(document).ready(function() { 
 
    $('.Box').on("keyup", function(e) { 
 
    var Length = $(this).attr("maxlength"); 
 
    if ($(this).val().length >= parseInt(Length)) { 
 
     $(this).removeClass("productkey1").addClass("productkey2"); 
 
     $(this).next('.Box').focus(); 
 
    } 
 
    }); 
 
}); 
 

 
$(document).ready(function() { 
 
    $('.Box').on("keydown", function(e) { 
 
    var Length = $(this).attr("maxlength"); 
 
    if ($(this).val().length > parseInt(Length)) { 
 
     $(this).removeClass("productkey2").addClass("productkey1"); 
 
     $(this).prev('.Box').focus(); 
 
    } 
 
    }); 
 
});
.Box:focus { 
 
    border: thin solid #FFD633; 
 
    -webkit-box-shadow: 0px 0px 3px #F7BB2E; 
 
    -moz-box-shadow: 0px 0px 3px #F7BB2E; 
 
    box-shadow: 0px 0px 3px #F7BB2E; 
 
} 
 
.Box { 
 
    height: 15px; 
 
    width: 4%; 
 
    text-align: justify; 
 
    letter-spacing: 5px; 
 
    padding: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div> 
 
    <sapn>Enter Key Code :</sapn> 
 
    <input class="Box productkey1" style="width: 35px;" type="password" name="number1" maxlength="1"> 
 
    <input class="Box productkey1" style="width: 35px;" type="password" name="number2" maxlength="1"> 
 
    <input class="Box productkey1" style="width: 35px;" type="password" name="number3" maxlength="1"> 
 
    <input class="Box productkey1" style="width: 35px;" type="password" name="number4" maxlength="1"> 
 
</div>

risposta

6

È possibile raggiungere questo controllando che il length del testo in ingresso corrente è pari a zero quando si preme il tasto backspace:

$(document).ready(function() { 
 
    $('.Box').on("keyup", function(e) { 
 
     var $input = $(this); 
 
     if ($input.val().length == 0 && e.which == 8) { 
 
     $input.toggleClass("productkey2 productkey1").prev('.Box').focus(); 
 
     } 
 
     else if ($input.val().length >= parseInt($input.attr("maxlength"), 10)) { 
 
     $input.toggleClass("productkey1 productkey2").next('.Box').focus(); 
 
     } 
 
    }); 
 
});
.Box:focus { 
 
    border: thin solid #FFD633; 
 
    -webkit-box-shadow: 0px 0px 3px #F7BB2E; 
 
    -moz-box-shadow: 0px 0px 3px #F7BB2E; 
 
    box-shadow: 0px 0px 3px #F7BB2E; 
 
} 
 
.Box { 
 
    height: 15px; 
 
    width: 50px; 
 
    text-align: justify; 
 
    letter-spacing: 5px; 
 
    /*CSS letter-spacing Property*/ 
 
    padding: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div> 
 
    <sapn>Enter Key Code :</sapn> 
 
    <input class="Box productkey1" type="password" name="number1" maxlength="4"> 
 
    <input class="Box productkey1" type="password" name="number2" maxlength="4"> 
 
    <input class="Box productkey1" type="password" name="number3" maxlength="4"> 
 
    <input class="Box productkey1" type="password" name="number4" maxlength="4"> 
 
</div>

Nota anche che ho messo in ordine il on() logico in un singolo gestore di eventi e utilizzato toggleClass() per modificare entrambe le classi in una singola chiamata.

+0

Ottimo! Che dire di ogni campo accetta 4 lettere? – M98

+0

Grazie ,,, il suo funzionamento – sridharan

Problemi correlati