Todavía estoy atrapado aquí al validar el valor de la entrada. Si el valor está entre 0.4 y 0.9, la entrada n2 eliminará el de solo lectura. Por otro lado, si el valor es menor que 0.4 o mayor que 0.9, se mostrará un diálogo modal. Mi pregunta aquí es validar el valor / longitud si la clave de valor introducida por el usuario no está en valor decimal. digamos que el usuario inserte el valor 1, luego mi jquery no se disparará porque mi longitud es >=3 ... si pongo la verificación de longitud > 1, cuando el usuario ingresa el valor decimal, por ejemplo 0.5, el diálogo modal aparecerá 3 veces ... ya que mi valor de longitud es >= 3 ... si elimino la comprobación de longitud, mantendrá emergente el cuadro de diálogo modal cada vez que el usuario ingrese la longitud del valor más de uno. Mi pregunta es cómo controlar tal situación si el valor de rango válido se encuentra entre 0.4 y 0.9, al mismo tiempo, ¿puede comprobar el valor que no está también en número decimal? ¿Es posible?

<input type="text" class="form-control input-sm da" name="da" id="da" value="" autocomplete="off" />

<div class="form-group actionDiv" style="display:none">
<label for="cdaaction">Action </label>
<input type="text" class="form-control input-sm cdaaction" name="cdaaction" id="cdaaction" value="" />
</div>

<input type="text" class="form-control input-sm n2" name="n2" id="n2" value="" autocomplete="off" readonly />

$(document).ready(function() {
            $(".da").keyup(function() {
            var dInput = $(this).val();

            if ($('.da').val().length >= 3) 
            {
                if(dInput < 0.4 || dInput > 0.9)
                {
                    var mymodal = $('#mi-modal');
                    mymodal.find('.modal-body').html('Is the value correct: '+ $('.da').val() +'  ?');
                    mymodal.find('.modal-footer').html('<button type="button" class="btn btn-default" id="modal-btn-si">Yes</button><button type="button" class="btn btn-primary" id="modal-btn-no">No</button>');
                    $("#mi-modal").modal('show');

                    $("#modal-btn-si").on("click", function(){
                    $("#mi-modal").modal('hide');
                    $('.actionDiv').show();
                    });

                    $("#modal-btn-no").on("click", function(){
                    $("#mi-modal").modal('hide');
                    $('.actionDiv').hide();
                    $("#da").focus();
                    });
                    $(".n2").attr('readonly', true);

                }
                else
                {
                    $(".n2").removeAttr("readonly");
                    $('.actionDiv').hide();
                }
            }


            });
        });
0
parkway 4 nov. 2019 a las 10:28

2 respuestas

Podría considerar activar su código en blur(). Cuando el usuario se enfoca fuera del cuadro de entrada, puede verificar si el valor ingresado es correcto o no.

Además, lo que Carsten dijo es cierto: use type=number para su entrada y no necesitará verificar la longitud de la entrada, solo el valor.

0
Adrian - Reinstate Monica 4 nov. 2019 a las 12:50

Utilice parseFloat()

$(document).ready(function() {
        $(".da").keyup(function() {
        //var dInput = $(this).val();

        var val = parseFloat($(this).val());


            if (!isNaN(val) && (val < 0.4 || val > 0.9))
            //if(dInput < 0.4 || dInput > 0.9)
            {
                var mymodal = $('#mi-modal');
                mymodal.find('.modal-body').html('Is the value correct: '+ $('.da').val() +'  ?');
                mymodal.find('.modal-footer').html('<button type="button" class="btn btn-default" id="modal-btn-si">Yes</button><button type="button" class="btn btn-primary" id="modal-btn-no">No</button>');
                $("#mi-modal").modal('show');

                $("#modal-btn-si").on("click", function(){
                $("#mi-modal").modal('hide');
                $('.actionDiv').show();
                });

                $("#modal-btn-no").on("click", function(){
                $("#mi-modal").modal('hide');
                $('.actionDiv').hide();
                $("#da").focus();
                });
                $(".n2").attr('readonly', true);

            }
            else
            {
                $(".n2").removeAttr("readonly");
                $('.actionDiv').hide();
            }
        }


        });
    });
1
Yihsiu 4 nov. 2019 a las 07:49