2012-01-25 12 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/ ありがとうございます。あなたは自分のアニメーションやフィールドに.stop()を追加する必要が

答えて

1

は関係なく、あなたがここにあるをクリックした回数を元のサイズに戻りません - あなたは、同じ入力に何回もクリック行う場合http://jsfiddle.net/DCjYA/224/

+0

のままサイズをアニメートする:( width:350、元のサイズに戻っていません... – mcmwhfy

+1

http://jsfiddle.net/DCjYA/225/これは少し汚れています。 'を使用してコードを2回繰り返すのではなく、そのアイデアを得ました; –

+0

ありがとう、うまくいくようです:) – mcmwhfy

関連する問題