Я пишу форму «Смена пароля», но я не слишком хорошо разбираюсь в javascript и мне нужно немного помочь 🙂
Это моя текущая функция:
function changeformhash(form, currentpwd, password, conf) {
// Check each field has a value
if (currentpwd.value == '' ||
password.value == '' ||
conf.value == '') {
alert('¡Debes proporcionar todos los datos solicitados!');
form.currentpwd.focus();
return false;
}
// Check that the current password is sufficiently long (min 6 chars)
// The check is duplicated below, but this is included to give more
// specific guidance to the user
if (currentpwd.value.length < 6) {
alert('Tu contraseña actual debe contener, como mínimo, 6 carácteres. Por favor, intentalo de nuevo.');
currentpwd.value = "";
password.value = "";
conf.value = "";
form.currentpwd.focus();
return false;
}
// At least one number, one lowercase and one uppercase letter
// At least six characters
re = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/;
if (!re.test(currentpwd.value)) {
alert('Tu contraseña actual debe contener, como mínimo, 1 númnero y 1 letra mayúscula y minúscula. Por favor, intentalo de nuevo.');
currentpwd.value = "";
password.value = "";
conf.value = "";
form.currentpwd.focus();
return false;
}
// Check that the new password does not match with the current password
// and is sufficiently long (min 6 chars)
// The check is duplicated below, but this is included to give more
// specific guidance to the user
if (password.value == currentpwd.value) {
alert('¡No puedes usar la misma contraseña!');
currentpwd.value = "";
password.value = "";
conf.value = "";
form.currentpwd.focus();
return false;
}
if (password.value.length < 6) {
alert('La contraseña debe contener, como mínimo, 6 carácteres. Por favor, intentalo de nuevo.');
currentpwd.value = "";
password.value = "";
conf.value = "";
form.currentpwd.focus();
return false;
}
// At least one number, one lowercase and one uppercase letter
// At least six characters
var re = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/;
if (!re.test(password.value)) {
alert('La contraseña debe contener, como mínimo, 1 númnero y 1 letra mayúscula y minúscula. Por favor, intentalo de nuevo.');
currentpwd.value = "";
password.value = "";
conf.value = "";
form.currentpwd.focus();
return false;
}
// Check password and confirmation are the same
if (password.value != conf.value) {
alert('¡Las contraseñas no coinciden!');
currentpwd.value = "";
password.value = "";
conf.value = "";
form.currentpwd.focus();
return false;
}
// Create a new element input, this will be our hashed current password field.
var currentp = document.createElement("input");
// Add the new element to our form.
form.appendChild(p);
p.name = "currentp";
p.type = "hidden";
p.value = hex_sha512(currentpwd.value);
// Create a new element input, this will be our hashed password field.
var p = document.createElement("input");
// Add the new element to our form.
form.appendChild(p);
p.name = "p";
p.type = "hidden";
p.value = hex_sha512(password.value);
// Make sure the plaintext password doesn't get sent.
currentpwd.value = "";
password.value = "";
conf.value = "";
// Finally submit the form.
form.submit();
return true;
}
Но сначала я хотел бы задать один вопрос для безопасности и комфорта пользователя: если проблем с безопасностью нет, могу ли я оставить поле текущего пароля заполненным, если проверка нового пароля не удалась? Я знаю, из первых рук, что написание паролей снова и снова, потому что некоторые опечатки … могут быть действительно раздражающими 🙂
Я также хотел бы, кроме проверки того же пароля, проверить аналогичный пароль, проверяя новый и текущий пароль, как я могу это сделать?
На самом деле, если все проверки пройдены, ничего не происходит, стиль css hover зависает:
Вот что я получаю в консоли Firefox: TypeError: Аргумент 1 из Node.appendChild не является объектом.
Я на самом деле использую input type = «button», потому что submit будет отправлять, даже если javascript возвращает false, так что … как я могу использовать input type = «submit» и предотвратить отправку, если возвращает false?
Заранее спасибо!
Задача ещё не решена.
Других решений пока нет …