Как проверить окно запроса на ошибку в javascript?

#javascript #html #string

#javascript #HTML #строка

Вопрос:

Я пытаюсь убедиться, что пользователь вводит значение для имени, а не просто оставляет его пустым. У меня есть драйвер, который вызывает функцию и возвращает имя переменной.

Я пытался

 if (name == null || name == "") {
        getName();
    }
  

как в функции, так и под вызовом функции в драйвере. Я также пробовал цикл while в обоих местах. Оператор If в драйвере позволяет мне получить приглашение, если я дважды нажму ok, и даже если я введу имя во второй раз, оно не сохранится. Цикл while не прерывался даже после того, как я ввел имя.

Если этого кода недостаточно, просто дайте мне знать.

 function driver(){
var retName = getName();
}
  
 function getName(){
    var name = prompt("Enter your name");
    return name;
  

Я хочу, чтобы в приглашении говорилось, пожалуйста, введите действительное имя или, по крайней мере, просто не пропускайте пользователя, пока он что-то не введет.

Ответ №1:

Одним из вариантов является использование do/while цикла:

 let name;
do {
  name = prompt('Enter your name');
} while (!name);
console.log(name);  

Комментарии:

1. в этом случае значение do / while является префектом. 1. и prompt всегда будет возвращать строку , которая неверна. Если оно отменено, оно возвращает null

Ответ №2:

Просто используйте while цикл:

 var name = prompt("Enter your name:");
while (name == null amp;amp; name == "") {
  name = prompt("Enter your name:");
}
console.log("Valid name!");
console.log(name);  

Обратите внимание, что приведенное выше не касается имени, содержащего только пробелы, поэтому используйте trim также:

 var name = prompt("Enter your name:");
while (name == null amp;amp; name.trim() == "") {
  name = prompt("Enter your name:");
}
console.log("Valid name!");
console.log(name);  

Комментарии:

1. Приятель, твой код работает не так, как ожидалось. Если вы нажмете «Отмена», это войдет в журнал "Valid name!" . Попробуйте ввести amp;amp; в ur while условие.

2. О да, @MaheerAli, извините, я исправил это сейчас