我有以下代码:
<input type="text" name="email" id="email" class="required-input" value="test@yahoo.com">
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 :(得分:1)
由于obj
是本机DOM对象,因此您收到错误。将其转换为jQuery对象
$(obj).attr("id")
OR,更好地传递jQuery对象以验证函数。
validate($(this));
答案 1 :(得分:0)
this
是对您试图调用jQuery方法的DOMElement的引用 - 因此是错误。您需要将jQuery对象传递给该方法。试试这个:
validate($(this));