2013-02-13 54 views
0

我想爲一系列用戶輸入值(-180到180)做一個簡單的表單驗證,但代碼沒有按照我的預期行事。Javascript和語句的語法

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

===虛假沒有意義。改變邏輯,所以你不需要奇怪的檢查。 – epascarello 2013-02-13 22:00:27

+0

請在發佈前格式化您的代碼 – 2013-02-13 22:00:36

+0

確實有道理,@epascarello - '&&'兩個子表達式的結果都是布爾值。 (我不會用這種方式編碼,但它不是「錯誤的」。 – Pointy 2013-02-13 22:01:12

回答

3

我想你應該檢查lon變量不小於-180並且不會超過180。使用簡單if聲明:

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

重要的是要注意,你最好使用var關鍵字定義局部變量是很重要的。

+1

這將很好解釋什麼是錯誤的 – 2013-02-13 22:02:05

+0

@VisioN嘗試了你的'if'語句,但它仍然只能捕獲超出範圍減值 – 2013-02-13 22:07:18

+0

@ DarraghO'Keeffe你在這兩個部分使用'lon'變量嗎? – VisioN 2013-02-13 22:09:03

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' – 2013-02-13 22:25:18

1

如果你想在一定範圍內驗證那麼如果條件應該是檢查一個變量而已,如果是真的,返回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; 
    } 
}