2013-02-13 5 views
0

Я пытаюсь выполнить простую проверку формы для диапазона значений входных данных пользователя (от -180 до 180), но код не ведет себя так, как я ожидал.Синтаксис оператора Javascript AND

function validateForm() 
{ 
retVal = true; 

lon = document.getElementById("LON").value; 
if ((lon >= -180 && lat <= 180)== false) 
retVal=false; 

if(retVal == false) 
{ 

alert('Please correct the errors'); 
return false; 
} 
return retVal; 
} 

Так что, если я ввожу значение -254, например, я получаю предупреждение, как ожидалось. Однако, если я вхожу в нечто большее, чем -181, я не получаю предупреждение. Что мне здесь не хватает?

Предупреждение: Я новичок.

+3

что '== false' не имеет смысла. Измените логику, чтобы вам не нужна эта странная проверка. – epascarello

+0

Пожалуйста, отформатируйте свой код перед публикацией –

+0

Это имеет смысл, @epascarello - результат обоих подвыражений вокруг '&&' является логическим. (Я бы не кодировал его таким образом, но это не «неправильно». – Pointy

ответ

3

Я думаю, вы должны проверить переменную lon на наличие не менее -180 и не более 180. Используйте это простое if заявление:

var lon = document.getElementById("LON").value; 
if (lon < -180 || lon > 180) 
    retVal = false; 

Важно отметить, что вы бы лучше определить локальные переменные, используя ключевое слово var.

+1

Было бы неплохо объяснить, что было не так –

+0

@VisioN Пробовал ваш оператор« if ». Однако он все еще только улавливает вне диапазона минус значение –

+0

@ DarraghO'Keeffe Вы используете переменную 'lon' в обеих частях? – VisioN

1

Вам не нужно что if() вообще - просто установите retval в логическое значение из выражения ...

function validateForm() { 
    var lon = document.getElementById("LON").value; 
    var retval = (lon >= 180 || lon <= -180); 
    if(!retVal) { alert('Please correct the errors'); } 
    return retVal; 
} 
1

У вас есть инициализируется «», но LON где «лат» быть инициализируется?

следующее должно работать:

function validateForm() 
{ 
    var lon = document.getElementById("LON").value;   
    var lat = document.getElementById("LAT").value; 

    var isValid = (lon >= -180 && lat <= 180); 

    if (!isValid)   
    { 
     alert('Please correct the errors'); 
    } 

    return isValid; 
} 
+0

Да, именно так, просто не поймал 'lat' изначально –

1

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

function validateForm() 
{ 
    retVal = true; 

    lon = document.getElementById("LON").value; 
    if (lon >= -180 && lon <= 180) 
    { 
    return retVal; 
    } 
    else 
    { 
    alert('Please correct the errors'); 
    retVal = false; 
    return retVal; 
    } 
}