始终检查输入中的值

时间:2018-09-04 17:00:52

标签: javascript jquery input

当前我有这个,如果值在35到49之间,则显示一条消息:

$(window).load(function() {
    $("#amountInput").change(function(){
       if(parseInt(this.value) > 34 && parseInt(this.value) < 50) {
           $(".amountMessage").addClass("show");
       } else {
           $(".amountMessage").removeClass("show");
       }
   })
});

唯一的问题是,直到我单击输入后,才检查输入值。我需要在输入值更新时检查该值。 我尝试了keyup和keypress而不是更改,但是它似乎没有用,也许我做错了(可能是!)。任何帮助都将不胜感激!

谢谢!

4 个答案:

答案 0 :(得分:1)

我会尝试像这样通过keyup准备好文档

\"

https://jsfiddle.net/kjgnq4L1/8/

答案 1 :(得分:0)

有几种更改输入值的方法。  1.按键  2.粘贴

在第一种情况下,最好跟踪“ change”和“ keyup”(当您已经知道所按下的键并可以进行一些计算时)。在第二种情况下,您必须跟踪“输入”事件。

https://jsfiddle.net/ym3ukx54/

$('input').on("change keyup input",function() { 
    $('div').show();
});

答案 2 :(得分:0)

您需要使用input event而不是 change ,因为在更改值时会同时触发此事件。

您可以使用.toggleClass( className, state )

来添加或删除类
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

$("#amountInput").on('input', function(e){
    var state = parseInt(this.value) > 34 && parseInt(this.value) < 50;    
    $(".amountMessage").toggleClass("show", state);
})
$("#amountInput").on('input', function(e){
    var state = parseInt(this.value) > 34 && parseInt(this.value) < 50;    
    $(".amountMessage").toggleClass("show", state);
})
.amountMessage {
    display: none;
}
.show {
    display: block;
}

答案 3 :(得分:0)

让jQuery处理该数字,除非这里将“ 37a”或“ 40 years”视为有效数字,否则不必处理parseInt函数。

.change()就像.blur()一样,它只有在失去焦点之后才触发,然后才改变值。

.keyup()对字段具有焦点的任何键的释放作出反应。

.input()也是不错的选择,但是如果您想对粘滞键或键盘上的人入睡或其他类似情况做出反应,它会更有用,因为它也可以通过按住按钮来捕获输入的数字。

$("#amountInput").keyup(function(){
    $(".amountMessage").toggleClass("show", ($(this).val() > 35 && $(this).val() < 50));
});