未捕获的类型错误:passwordInput.search 不是一个函数



尝试验证用户名和密码,但即使用户名和密码正确,我也会收到错误。我得到了一个TypeError,我做错了什么?我使用的是字符串方法吗?

function validateLogin() {
let passwordInput = document.getElementById('password');
let userName = document.getElementById('userName');
event.preventDefault();
// Set errors to an empty array
let errors = [];
// Conditions for password validation   
if(passwordInput.length < 8) {
errors.push('Your password must be at least 8 characters long')
}
if(passwordInput.search(/[a-z]/) < 0) {
errors.push('Your password must cotain at least one lowercase letter')
}
if(passwordInput.search(/[A-Z]/) < 0) {
errors.push('Your password must conatin at least one uppercase letter')
}
if(passwordInput.search(/[0-9]/) < 0) {
errors.push('Password must contain at least one number!')
}
if(passwordInput.search(/[!@#$%^&*()_+.,;:-]/) < 0) {
errors.push("Your password must contain at least one special character.")
}
// Login
if (errors.length > 0) {
document.getElementById("errors").innerHTML = errors.join("<br>")
console.log('Error logging in')
return false;
} else if(errors.length < 0 && userName.value){
console.log('Youre logged in!')
}
};

你在search上得到了TypeError,因为searchString的函数,并且你在element的上下文中使用它。

您需要做的就是使用passwordInputvalue,它应该没问题。

而不是使用:

let passwordInput = document.getElementById('password');

属于element型。

您应该使用:

let passwordInput = document.getElementById('password').value;

类型String.

现在你应该能够使用passwordInput.search,因为passwordInput是一个字符串,search是一个字符串函数。

最新更新