| Цитата: | 
	| Число должно быть от 1 до 50 | 
	
Ну вот у тебя и получается, что если вдруг число правильное - цикл будет продолжаться. Если неправильное - цикл закончится. Если уж строить таким образом, то поменяй "<" на ">".
Но вообще-то это делается так:
while (true) //Делаем бесконечный цикл. Да-да.
{
  //Не забывай оператор var при объявлении переменных!
  var input = prompt("Введите число от 1 до 50", ""); 
  
  if (input == null)
  {
    alert("Вы нажали cancel");
    break;  //Оператор break используется для досрочного завершения цикла.
  }
  input = parseInt(input); //parseInput преобраузет строку в число. Функция prompt возвращает именно строку, а нам нужно число.
  if (isNaN(input))
  {
     //Функция isNaN возвращает true, если аргумент - не число.
     continue; //Оператор continue используется для досрочного перехода к следующей итерации цикла.
  }
  if (input >= 1 && input <= 50)
  {
    alert("Вы ввели нужное число");
    break;
  }
}