0

我正在尝试对一系列用户输入值(-180 到 180)进行简单的表单验证,但代码的行为与我预期的不同。

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 的值,我就不会收到警报。我在这里想念什么?

警告:我是新手。

4

4 回答 4

3

我想你应该检查lon变量不小于-180和不大于180。使用这个简单的if语句:

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

需要注意的是,您最好使用var关键字定义局部变量。

于 2013-02-13T22:00:25.137 回答
1

你有初始化的“lon”,但“lat”在哪里被初始化?

以下应该有效:

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;
}
于 2013-02-13T22:06:58.220 回答
1

如果要在某个范围内进行验证,则 if 条件应仅检查单个变量,如果为 true,则返回 true,否则显示错误并返回 false。

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;
    }
}
于 2013-02-13T22:11:10.487 回答
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;
}
于 2013-02-13T22:05:38.110 回答