2016-02-16 78 views
0

我有以下代碼:遺漏的類型錯誤:obj.attr不是一個函數JS

<input type="text" name="email" id="email" class="required-input" value="[email protected]"> 
function validate(obj) { 
    const email_regex = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/; 
    if (obj.attr("id") == "email") { 
     regex = email_regex; 
    } 

    (!obj.val().match(regex) || obj.val().length == 0 || obj.val() == '') ? obj.removeClass('valid').addClass('invalid'): obj.removeClass('invalid').addClass('valid'); 
} 

$('.required-input').each(function() { 
    $(this).on('input keyup keypress blur change', function() { 
     validate(this); //EROR HERE 
    }); 
}); 

的錯誤如下Uncaught TypeError: obj.attr is not a function

你知道這個錯誤的由來? 這是錯誤的參數函數驗證?

請你能幫我解決這個問題嗎?

提前致謝!

回答

0

this是您試圖調用jQuery方法的DOMElement的引用 - 因此錯誤。您需要將jQuery對象傳遞給該方法。試試這個:

validate($(this)); 
+0

__Too quick__;) – Rayon

1

由於obj是原生DOM對象,所以您會收到錯誤消息。將它轉換爲jQuery對象

$(obj).attr("id") 

或者,最好通過jQuery對象來驗證函數。

validate($(this)); 
相關問題