I'd like to call a function based on a text input. This is my code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.message {
margin-top: 10px;
color: red;
}
</style>
</head>
<body>
<div id="uppercase" class="message">Must contain at least one uppercase letter</div>
<div id="lowercase" class="message">Must contain at least one lowercase letter</div>
<div id="numeric" class="message">Must contain at least one numeric digit</div>
<div id="specialchar" class="message">Must contain at least one special character</div>
<script>
function checkPassword() {
var password = document.getElementById("P99_NEW_PASSWORD").value;
var uppercaseMessage = document.getElementById("uppercase");
var lowercaseMessage = document.getElementById("lowercase");
var numericMessage = document.getElementById("numeric");
var specialcharMessage = document.getElementById("specialchar");
// Reset messages
uppercaseMessage.style.color = "red";
lowercaseMessage.style.color = "red";
numericMessage.style.color = "red";
specialcharMessage.style.color = "red";
// Check conditions
if (/[A-Z]/.test(password)) {
uppercaseMessage.style.color = "green";
}
if (/[a-z]/.test(password)) {
lowercaseMessage.style.color = "green";
}
if (/\d/.test(password)) {
numericMessage.style.color = "green";
}
if (/[!@#$%^&*(),.?":{}|<>]/.test(password)) {
specialcharMessage.style.color = "green";
}
}
</script>
</body>
</html>
And this is how it looks like:
What I want to do is, when a user enter a password in the New Password field (which is P99_NEW_PASSWORD), checkPassword() will be called. However, I don't know what/where to put to call checkPassword() function. Could anyone help to solve this? Thanks in advance.
Here is a working example for a single message, my page is 206:
function checkPassword() {
var password = apex.items.P206_NEW_PASSWORD.getValue();
var uppercaseMessage = document.getElementById("uppercase");
// Reset messages
uppercaseMessage.style.color = "red";
// Check conditions
if (/[A-Z]/.test(password)) {
uppercaseMessage.style.color = "green";
}
}
<div id="uppercase">Must Contain at least one uppercase letter</div>
For UI purposes, this can probably be done cleaner using the same source.
checkPassword()
Note: it's fine for code like this to check: the user knows the new password and can check it. However, for any password saving, comparing and validating... that should always be done encrypted and not in clear text. In general it's pretty unusual for apex applications to have their own user management. There are plenty of options for credential management.