2013-02-11 48 views
-1

我有一個輸入字段,當用戶單擊輸入時,我想要突出顯示脈衝。我想我可以通過添加和刪除一個類來做到這一點,但它似乎只是添加它。jQuery添加和刪除不在一個系列中工作的類

CSS

input.update-value { 
    -webkit-box-shadow: 0px 1px 5px rgba(12, 141, 45, 0.75); 
    -moz-box-shadow: 0px 1px 5px rgba(12, 141, 45, 0.75); 
    box-shadow:   0px 1px 5px rgba(12, 141, 45, 0.75); 
} 

JS

$(function() 
    { 
     var testTextBox = $('.edit-device'); 
     var code =null; 
     testTextBox.keypress(function(e) 
     { 
      code= (e.keyCode ? e.keyCode : e.which); 
      if (code == 13) 
      $(".edit-device").blur().addClass('update-value').delay(350); 
      $(".edit-device").removeClass('update-value').removeClass(); 
      $(".edit-device").addClass('update-value').addClass(); 
      $(".delete-input").hide(); 
      e.preventDefault(); 
     }); 

    }); 
+1

您有一個簡單的語法錯誤。 – 2013-02-11 19:10:51

回答

3

delay()只適用於動畫,而不是在添加/刪除類。你需要使用的setTimeout,或者如果執行函數多次,使用的setInterval,像這樣:

$(function() { 
    $('.edit-device').on('keyup', function (e) { 
     e.preventDefault(); 
     var self = this, i=0; 
     if (e.which == 13) { 
      $(self).blur().addClass('update-value'); 
     } 
     var timer = setInterval(function() { 
      $(self).removeClass('update-value'); 
      setTimeout(function() { 
       $(self).addClass('update-value'); 
      },1000); 
      i++; 
      if (i>3) clearInterval(timer); 
     },2000); 
    }); 
}); 

FIDDLE

+0

它需要打開和關閉三次。 setTimeout似乎會使其閃爍 – ndesign11 2013-02-11 19:24:50

+0

@ ndesign11添加更多setTimeouts以獲得您想要的效果。 – 2013-02-11 19:28:08

+0

我試過了,沒有工作 – ndesign11 2013-02-11 19:30:17

1

您可以使用下面的jQuery插件,$.fn.blink

$.fn.blink = function(cls, times, delay) { 
    var $self = this.removeClass(cls); 
    clearTimeout($.fn.blink.handler); 
    !function animate(times) { 
     if(times) { 
      $self.toggleClass(cls); 
      $.fn.blink.handler = setTimeout(function() { 
       animate(times - 1); 
      }, delay); 
     } 
    }(times * 2); 
    return this; 
}; 

用法:

$(".edit-device").blink("update-value", 3, 350); 

眨眼3update-value類名與350毫秒的延遲。

See it here.