jQuery - 检测何时替换'功能执行动作

时间:2012-08-28 13:37:15

标签: jquery

我使用jQuery替换功能来确保用户只能在电话号码字段中输入数字和连字符(它是一个私人网络应用程序,并且必须启用JS才能登录)。

我想在触发替换函数后将xss类(突出显示为红色)添加到输入x秒,以便用户可视地看到输入拒绝输入。

如何在激活替换功能后将css类添加到输入x秒? (仅在实际替换输入时)

$("#v_phone").bind('keyup blur',function(){ 
    $(this).val( $(this).val().replace(/[^\d-]/g,'') ); }
);

2 个答案:

答案 0 :(得分:0)

使用setTimeout()

$("#v_phone").bind('keyup blur',function(){ 
    var $this = $(this);
    var currentValue = $this.val();
    var newValue = currentValue.replace(/[^\d-]/g,'');
    if (currentValue != newValue) {
       $this.val(newValue);
       $this.addClass("alert");  // add class
       var x = 5;
       setTimeout(function () {
         $this.removeClass("alert");  // remove class after x seconds
       }, x * 1000);
    }
});​

<强> DEMO

答案 1 :(得分:0)

replace()是原生JavaScript,而不是jQuery。您可以先测试表达式,然后查看是否需要替换,然后触发该类:

var reg = /[^\d-]/g;

$("#v_phone").bind('keyup blur',function() { 
    var $this = $(this);
    if( reg.test(this.value) ) {
        $this.addClass('highlight');
        setTimeout(function() {
            $this.removeClass('highlight');
        },1000); // 1s
        $this.val( this.value.replace(reg,'') );
    }
});

http://jsfiddle.net/HvGnf/