2012-01-25 32 views
0

我有這個功能,它是爲我的輸入設置一個寬度,並向父級廣告一個類。運行.animate時是否可禁用焦點事件?

function inputWidth() { 
     $('input[disabled="disabled"]').removeAttr("disabled").prop("readonly", true); 
     $('input[type!="submit"]').focus(function(){ 
      if ($(this).val().length > 20) { 
       $(this).attr('data-default', $(this).width()); 
       $(this).animate({ 
        width: 350 
       }, 'slow'); 
       $(this).parent().addClass('cooling'); 
      } 
     }).blur(function(){ /* lookup the original width */ 
      var w = $(this).attr('data-default'); 
      $(this).animate({ 
       width: w 
      }, 'fast'); 
      $(this).parent().removeClass('cooling'); 
     }); 
    }; 

我的問題是我怎麼停止動畫運行時,單擊事件,因爲如果我這樣做點擊多少次同時在模糊輸入2個輸入不知道跑回到原來的大小。

我附加了一個打印屏幕以更好地理解行爲。這裏是:http://s17.postimage.org/j6kn0fr9b/fiddle.jpg 這裏是一個小提琴的例子: http://jsfiddle.net/DCjYA/223/ 謝謝。

回答

1

你只需要添加一個.stop()到您的動畫和字段將回到自己原來的大小,無論你點擊這裏多少次,有 - http://jsfiddle.net/DCjYA/224/

+0

如果你點擊相同的輸入多次仍動畫大小:( 寬度:350,並沒有運行回原始大小... – mcmwhfy

+1

更新http://jsfiddle.net/DCjYA/225/它有點髒,你可能想要定義一個單獨的函數來「點擊'並使用它而不是重複代碼兩次,但你有想法;-) –

+0

謝謝你,似乎工作得很好:) – mcmwhfy