Quería que un campo de texto tomara solo números, ya que algunas teclas de control y número deberían tener exactamente cuatro dígitos. Mi código es el siguiente:

<div id="main" role="main">
                Input a 4-digit: <input type="text" class="validateYearTextBox" />
            </div>
<div id="alert"></div>

function checkValidInput() {
    $(".validateYearTextBox").keydown(function(event) {       
        if (!((event.keyCode == 46 || 
            event.keyCode == 8  || 
            event.keyCode == 37 || 
            event.keyCode == 39 || 
            event.keyCode == 9) || 
            $(this).val().length < 4 &&
            ((event.keyCode >= 48 && event.keyCode <= 57) ||
            (event.keyCode >= 96 && event.keyCode <= 105)))) {
                        // Stop the event
                        event.preventDefault();
                        return false;                       
            }
    });
}
$(document).ready(function() {

    checkValidInput();
});

Cuando ingreso un dígito de 4 en el cuadro de texto, debería aparecer una alerta en div como "válida"

Este es el Fiddle

0
Raja Shekar 13 may. 2016 a las 09:44

5 respuestas

La mejor respuesta

Prueba esto:

Jsfiddle: https://jsfiddle.net/jz1ra36d/

Solo agrega:

$(".validateYearTextBox").keyup(function(event) {    
  if( $(this).val().length == 4){
     $("#alert").text("valid")
   } else {
     $("#alert").text("")
   }
});
3
Jayesh Chitroda 13 may. 2016 a las 06:49

JSFiddle

Intente lo siguiente:

<div id="main" role="main">
    Input a 4-digit: <input type="text" class="validateYearTextBox" />
</div>
<div id="alert"></div>

<script>
function checkValidInput() {
    $(".validateYearTextBox").keydown(function(event) {       
        if (!((event.keyCode == 46 || 
            event.keyCode == 8  || 
            event.keyCode == 37 || 
            event.keyCode == 39 || 
            event.keyCode == 9) || 
            $(this).val().length < 4 &&
            ((event.keyCode >= 48 && event.keyCode <= 57) ||
            (event.keyCode >= 96 && event.keyCode <= 105)))) {
                        // Stop the event
                        event.preventDefault();
                        return false;                       
            }

            // count number of characters entered
            var cs = $('.validateYearTextBox').val().length;
            if(cs == 3)
            {
                $('#alert').html('valid'); 
            }
            else
            {
                $('#alert').html(''); 
            }
    });
}
$(document).ready(function() {

    checkValidInput();
});
</script>
2
Suyog 13 may. 2016 a las 07:09

Puede usar expresiones regulares para ello y cambiar al evento keyup:

function checkValidInput() {
  var re = /\d{4}/g,
    dt = $('.validateYearTextBox'),
    msg;
  msg = re.test(dt.val()) ? "Valid" : "Invalid";
  $('#alert').text(msg);
}

$(".validateYearTextBox").keyup(checkValidInput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main" role="main">
  Input a 4-digit:
  <input type="text" class="validateYearTextBox" />
</div>
<div id="alert"></div>
0
Jai 13 may. 2016 a las 06:53

Haría algo como esto.

function checkValidInput() {
    $(".validateYearTextBox").keydown(function(event) {    

       if( $(this).val().length == 3){
            $('#alert').html('<p>SUCCESS</p>');
       } 
        if (!((event.keyCode == 46 || 
            event.keyCode == 8  || 
            event.keyCode == 37 || 
            event.keyCode == 39 || 
            event.keyCode == 9) || 
            $(this).val().length < 4 &&
            ((event.keyCode >= 48 && event.keyCode <= 57) ||
            (event.keyCode >= 96 && event.keyCode <= 105)))) {
                        // Stop the event
                        event.preventDefault();
                        return false;                       
            }
    });
}
$(document).ready(function() {

    checkValidInput();
});
0
Jesper Højer 13 may. 2016 a las 06:59

Pruebe este script simple después de agregar onblur = "checkValidInput" id = "validateYearTextBox" a la etiqueta de entrada

function checkValidInput(){
var x,text;
x=document.getelementbyid("validateYearTextBox").value;
if(x==4)
text="Valid";
else
text="Not valid";
}
document.getelementbyid("alert").innerHTML=text;
0
Shamii 13 may. 2016 a las 07:17