2013-04-11 70 views
1

我建立一個自定義聯繫人窗體。我所有的輸入字段都有一個mouseenter/mouseleave和focus/blur動畫(背景色)。我的問題與模糊()和焦點()。 下面是名稱字段代碼:)輸入字段具有模糊的()和焦點()

  • nameInvalidation(:

    $('#userName').on('mouseenter', function(){ 
        if($.trim($(this).val()) == ""){ 
        $('#userName').animate({'background-color':'#FECC00'}, 200); 
        } 
        }); 
    
        $('#userName').on('mouseleave', function(){ 
        if($.trim($(this).val()) == ""){ 
         $(this).stop(true).animate({'background-color':'#ffffff'}, 200); 
        } 
        }); 
    
        $('#userName').focus(function(){ 
        $(this).animate({'background-color':'#B0CB1F'}, 200); 
    
        }); 
    
        $('#userName').blur(function(){ 
        $(this).animate({'background-color':'#ffffff'}, 200); 
        if($.trim($(this).val()) == ""){ 
         nameInvalidation(); 
        } 
        else{ 
         nameValidation(); 
        } 
        }); 
    

    的nameInvalidation()和nameInvalidation()有一些動畫對號變灰勾選 - 輸入字段需要填充 - 這是所有輸入字段的默認值;

  • nameValidation():綠色的勾號 - 場數據已準備好被髮送;

當我輸入輸入字段並且什麼都不做時,nameInvalidation()運行;當我輸入nameValidation()運行的內容時 - 我知道該字段是否準備好。 問題是這樣的:

  • ,如果我進入提交的輸入,它是空的
  • 如果,如果我離開它空
  • 如果我寫的東西,但在離開輸入字段
之前將其刪除

...比nameInvalidation()動畫是不是想運行,因爲它已經默認。

用於當現場的一些數據,我在它得到同樣的事情,改變或見好就收......綠色的勾號再次運行。

我嘗試使用KEYUP()和它的工作在一定程度上卻運行在每次擊鍵勾選動畫 - 我只希望當我離開現場。

這裏有一個Fiddle

佩德羅

回答

0

創建持有調用方法的當前狀態

檢查modified jsfiddle

var currentValidationMethodMane; 
    function nameValidation(){ 
     if(currentValidationMethodMane == "nameValidation"){ 
      return; 
     } 
     currentValidationMethodMane = "nameValidation"; 
    ......... 

function nameInvalidation(){ 
     if(currentValidationMethodMane == "nameInvalidation"){ 
     return; 
    } 
    currentValidationMethodMane = "nameInvalidation"; 

..... 
+0

簡單有效的變量 - 偉大工程!只有一件小事:*第一次*我們在輸入欄內單擊並離開,它爲灰色複選標記注入動畫。之後,一切都完美無瑕。你能做點什麼嗎? – Pedro 2013-04-12 08:33:22