Подсказка Javascript отменена, не ведя себя во время цикла - PullRequest
0 голосов
/ 13 октября 2011

У меня приглашение, которое в основном является обязательным и не может содержать десятичное число.У меня есть цикл while, который должен продолжать запрашивать информацию у пользователя, пока не будет указан номер, независимо от того, нажата ли кнопка OK или Отмена.Все работает нормально, пока нажата кнопка ОК.Он продолжает запрашивать, если оставить пустым и нажать кнопку «ОК» или если введено число с десятичной дробью и нажать кнопку «ОК».Но если нажать кнопку «Отмена», она не будет продолжать запрашивать.

var rmiles = prompt("Please indicate actual miles driven for payroll");
    while (rmiles == null | rmiles == "null" | rmiles == " " | rmiles.indexOf(".") != -1) {
        alert("Mileage is required when arriving on site and can only be whole numbers.  No Decimals.  Please enter 0 if you did not intend to arrive on site.");
        rmiles = prompt("Please indicate actual miles driven for payroll");
    }

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

Я считаю, что проблема в вашем while состоянии - вы выполняете поразрядно ИЛИ | при всех условиях. Это означает, что rmiles.indexOf(".") вызывается всегда, даже если для rmiles установлено значение null на prompt при нажатии кнопки Отмена. Это потому, что побитовое ИЛИ не закорачивает.

Попробуйте логическое ИЛИ ИЛИ ||, которое вызывает короткое замыкание и, таким образом, исключает ошибку нулевого задания:

while (rmiles == null || /*...*/
0 голосов
/ 13 октября 2011

Поскольку rmiles равно нулю, когда пользователь нажимает кнопку «Отмена» ... поэтому rmiles.indexOf создает ошибку / исключение и завершает цикл.

...