两个数字后触发Jquery键盘

时间:2017-11-06 04:06:08

标签: jquery keyup

<ion-view>
    <ion-content>
        <input type="text" ng-model="get.Name"/>
    </ion-content>
</ion-view>
<ion-footer>
    <button ng-click="save(get)">Save</button>
</ion-footer>

当我按下8(没有消息,因为8不是> 8)。当我按9时,它会触发警报,只有8个单位可用。到目前为止这么好但是当我按下12时它没有触发警报,为什么? 12是>看起来像keyup只读取输入的第一个数字。如何强制键盘读取数字12?

3 个答案:

答案 0 :(得分:0)

您需要在函数中传递事件对象以获取keycode

$(".maxQtyclass").keyup(function (e) { 
        var maxQty = $(this).attr('data-qty');
        //lets say it is 8\
        if (parseInt($(this).val()) > parseInt(maxQty)
            && e.keyCode != 46 // delete
            && e.keyCode != 8 // backspace
            ) { 
                $(this).val(maxQty);
                console.log('Only ' + maxQty + ' unit(s) available!');
                return false; 
            } 
        }); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="maxQtyclass" data-qty="8"/>

答案 1 :(得分:0)

因为它正在进行字符串比较所以“12”&gt; “8”失败了。尝试转换为int并进行比较,如下所示。

$(".maxQtyclass").keyup(function () { 
        var maxQty = $(this).attr('data-qty');
        //lets say it is 8
        if (parseInt($(this).val()) > parseInt(maxQty)
            && e.keyCode != 46 // delete
            && e.keyCode != 8 // backspace
            ) { 
            $(this).val(maxQty);
            alert('Only ' + maxQty + ' unit(s) available!');
            return false; 
        } 
    });

答案 2 :(得分:0)

您应该将输入文本解析为数字。在您的场景中,您比较&#34; 12&#34; &GT; &#34; 8&#34;在字符串数据类型中,并且因为12以字符串中的1和1开头小于8,条件返回false。像这样更改代码:

$(".maxQtyclass").keyup(function () { 
    var maxQty = parseInt($(this).attr('data-qty'));
    //lets say it is 8
    if (parseInt($(this).val()) > maxQty
        && e.keyCode != 46 // delete
        && e.keyCode != 8 // backspace
    ) { 
        $(this).val(maxQty);
        alert('Only ' + maxQty + ' unit(s) available!');
        return false; 
    } 
});

确保所有数字都是int。