如何使用javascript检查数字类型输入的有效性?

如何使用javascript检查数字类型输入的有效性?,javascript,validation,input,Javascript,Validation,Input,我已在表单中实现了数字类型输入,并指定了最小值和最大值: <input class="qty_input" name="quantit" type="number" value="5" min="1" max="50" maxlength="2" style="width:4em;"></input> 输入类型数字有效:如果输入了其他数字或数字值不在指定范围内,则输入变为红色 我有一个javascript函数,可以在输入更改时提交表单 <script type

我已在表单中实现了数字类型输入,并指定了最小值和最大值:

<input class="qty_input" name="quantit" type="number" value="5" min="1" max="50" maxlength="2" style="width:4em;"></input>

输入类型数字有效:如果输入了其他数字或数字值不在指定范围内,则输入变为红色

我有一个javascript函数,可以在输入更改时提交表单

<script type="text/javascript">
(function($) {

  function doAjax() {
    $.ajax({
        url : "blabla",
        type: "POST",
        data : $("#form-configurator").serializeArray(),
        dataType: 'json',
        success: function(data)
        {
            console.log(data);
        },
        error: function ()
        {

        }
    });
  }
$('input[type=number]').change(function() {

    // test Validity

    doAjax();
  });
})(jQuery);
</script>

(函数($){
函数doAjax(){
$.ajax({
网址:“布拉布拉”,
类型:“POST”,
数据:$(“#表单配置器”).serializeArray(),
数据类型:“json”,
成功:功能(数据)
{
控制台日志(数据);
},
错误:函数()
{
}
});
}
$('input[type=number]')。更改(函数(){
//测验效度
doAjax();
});
})(jQuery);
我想在运行doAjax()函数之前测试输入的数字是否有效

有没有一种简单的方法可以做到这一点,比如测试数字类型输入的“有效”参数? (当输入本身执行某些测试时,它应该存在…)

谢谢你的帮助

Alex

您可以使用
isNaN()
函数验证输入是否为数字。如果条件允许,您可以添加另一个

if(isNaN(value) || value <1 || value > 50)
 return ;
else 
    your logic     
if(isNaN(值)|值50)
返回;
其他的
你的逻辑
如果该值不是数字,则返回true。如果是数字,则返回false

请参见现场样本:

$('input[type=number]')。更改(函数(){
var min=$(this.attr(“min”)*1;
var max=$(this.attr(“max”)*1;
var val=$(this.val().length?$(this.val()*1:NaN;
//测验效度

如果(val>=min&&val
isNaN()
可以方便地检查其编号是否正确。您可以评估答案吗?这会起作用,但如果验证规则在HTML和JS中不重复会更好。@AdamHarwood立即检查这就是想法。如果type=number,则isNaN和min/max检查已经由HTML执行。无法检查结果在JS中进行此测试,而不是第二次进行所有测试?这仍然没有解决Alexglvr提出的问题。但是,可能HTML5根本没有提供一种“好”的方法来进行此测试。然后,我在JS中重新进行测试…使用两种混合解决方案。这很有效。再次感谢。
$('input[type=number]').change(function() {
    var min = $(this).attr("min") * 1;
    var max = $(this).attr("max") * 1;
    var val = $(this).val().length ? $(this).val() * 1 : NaN;
    // test Validity
    if (val >= min && val <= max) {
       $(this).css("background-color", "white");
       doAjax();
    } else {
       $(this).css("background-color", "red"); 
    }
});