#javascript
#javascript
Вопрос:
Я пытаюсь сделать так, чтобы пароль и пароль подтверждения совпадали, без того, чтобы они оба были просто оставлены пустыми.
Я хотел бы добавить в этой части о том, что поля пароля нельзя оставить пустыми в операторе if, сказав, что пароли имеют одинаковое значение, и эти значения не являются пустыми.
Функция работала нормально, когда это был просто оператор if, говорящий, что пароли должны совпадать, чтобы появилось приветственное предупреждение, и обнаружил, что символом and в javascript является amp;amp;, но я не знаю, как использовать его в контексте.
var check = function() {
if (document.getElementById('psw').value ==
document.getElementById('psw-repeat').value)
amp;amp;
(document.getElementById('psw').value) != ""
amp;amp;
(document.getElementById('psw-repeat').value) != "" }
else {
alert("passwords do not match")
}
}
Я бы ожидал, что этот код сообщит, что пароли не были заполнены, если они этого не сделали, скажет приветствие, если пароль и пароль подтверждения совпадают, и скажет, что пароли не совпадают, если они не совпадают.
Я не уверен, что я сделал не так, но был бы рад, если бы кто-нибудь мог помочь.
:))
Комментарии:
1. Все должно заключаться в одну внешнюю пару круглых скобок
if ( ... everything ... )
2. Если бы вы лучше отформатировали свой код, вы бы увидели свою проблему. Я бы получил линтер в вашей IDE, потому что это указало бы вам на проблему.
3. Пожалуйста, ознакомьтесь со скобками и кодом, их
if
предложение закрывается при первом сравнении:document.getElementById('psw').value == document.getElementById('psw-repeat').value
.4. Примеры, широко доступные в Интернете: w3schools.com/js/js_comparisons.asp
5. Наряду с предоставленными ответами я бы предложил использовать такие вещи, как атрибут required , а также для подобных ситуаций, чтобы браузер также помогал пользователям.
Ответ №1:
Вы не закрываете весь оператор if с помощью ()
Ответ №2:
Хорошо, лучший способ выполнить условия, подобные следующим. почему лучше
-
оптимизированный, вам не нужно снова и снова получать значения из dom для проверки условий
-
легко читаемое условие if.
-
Если код не читается, то это не лучший код
Поэтому всегда старайтесь нарушать условия
function() {
var password = document.getElementById('psw').value;
var password_repeat = document.getElementById('psw-repeat').value;
if (password == password_repeat amp;amp; password != "" amp;amp; password_repeat != "")
{
// code ..........
}
else
{
alert("passwords do not match")
}
}
Для лучшей проверки кода и его стилизации используйте некоторые IDE, такие как VSCode Atom Bracket
но лично мне нравится VSCode
Комментарии:
1. большое вам спасибо, я использую atom, но я просто не лучший в его четком изложении :))
Ответ №3:
Единственная реальная проблема — это неуместные круглые скобки и фигурные скобки, но этот способ добавляет пару улучшений помимо этих простых исправлений.
// Select HTML elements
const psw = document.getElementById("psw");
const pswRepeat = document.getElementById("psw-repeat");
const checkBtn = document.getElementById("checkBtn");
// Listen for button clicks
checkBtn.addEventListener("click", check);
// Validate passwords
function check(){
if(pswRepeat.value === psw.value amp;amp; psw.value != ""){
// We know they are the same, and psw is not empty (so neither is pswRepeat)
alert("good");
}
else{
alert("passwords do not match");
}
}
<input id="psw" />
<input id="psw-repeat" />
<button id="checkBtn">Check</button>
Ответ №4:
Вы забыли закрыть скобки.
Вам нужен лучший отступ для раннего обнаружения подобных проблем и некоторое разделение логики, чтобы код оставался читаемым.
Что — то вроде этого :
var check = function() {
if (isValid()) {
//Welcome here
} else {
alert("passwords do not match")
}
}
function isValid() {
var psw = document.getElementById('psw').value;
var repeatPsw = document.getElementById('psw-repeat').value;
//Logic to check for password
if (psw == repeatPsw amp;amp;
psw != "" amp;amp;
repeatPsw != ""
)
return true;
return false;
}
Комментарии:
1. да, мне действительно нужно стать лучше в настройке кода, большое вам спасибо за помощь 🙂