Задать вопрос
GailWynand
@GailWynand
Интересуюсь ИТ, биржевой торговлей, стартапами

Как зациклить prompt c проверкой?

Сразу предупреждаю, что вопрос возможно глупый :)

Нужно ввести число, проверить вдруг пользователь ничего не ввел или ввел пустую строку, и выбивать prompt пока он не введет, что нужно. Здесь все ок.

Дальше проверка на число (прошу не предлагать сложных вариантов как еще проверить, т.к. я нуб). Если не число - тогда алерт с сообщением и просьба ввести снова. Так вот тут null, пустую строку и тд принимает с легкостью. В принципе понятно, т.к. мы перезаписываем переменную, но все-таки не понятен этот момент.
var a = +prompt ("Enter the first number", ""); 
		while (a==undefined||a==null||a=='') { //тут проверка работает
			var a = +prompt ("Enter the first number", "");
		}

		while (isNaN(a*1)) { 
			alert("It's not a number!"); 
			var a = +prompt ("Enter the first number!", "");  //а вот тут уже спокойно принимает 
null и т.д. Не совсем понятно как тут тоже зациклить, если снова не прописывать while.
		}
  • Вопрос задан
  • 4419 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@Cyber_bober
это вы учебную задачу решаете или проект делаете? нужно выполнять проверку и выводит диалоговое окно если ввели не число или пустую строку?
Ответ написан
xDireX
@xDireX
Создайте функцию c callback которая при ошибке будет сама себя вызывать а при правильном значении передавать параметры в нужную функцию

// Функция при успешной проверки
var finishPromt = function(data){
	alert(data);
}

// Функция проверки
var checkPrompt = function (callkack){
	var a = prompt ("Please enter: 123", ""); 

	if(a != 123){
		checkPrompt(finishPromt);
	}else{
		callkack(a);
	}
}

// Вызов функции проверки
checkPrompt(finishPromt);
Ответ написан
Комментировать
@polar-bear
var num = prompt ("Enter the first number", "");
while (!isNumeric(num)) {
    alert("It's not a number!");
    num = prompt ("Enter the first number", "");
}

function isNumeric(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}
Ответ написан
Комментировать
@denilenko
Думаю среди npm-пакетов можно найти что-нибудь подходящее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы