2012-06-13 37 views
3

我正在創建一個經緯度驗證。如何在jQuery中驗證緯度和經度以及電子郵件地址

現在這是我的jQuery腳本:

var latlngVal = /^(-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,6}),{1}(-?([1]?[1-7][1-9]|[1]?[1-8][0]|[1-9]?[0-9])\.{1}\d{1,6})/; 
var latlng = $("input#latlng").val(); 
var invalid_latlng = 'Latitude and Longitude are not correctly typed'; 

// Validate Latitude and Longitude 
if(!latlngVal.test(latlng)) { 

    // ERROR 

    $("#error").html(invalid_latlng); 
    return false;; 
}; 

從谷歌的輸出可以是這樣的:63.548552,-127.529297。

我向他們展示瞭如何直接從Google複製經緯度並將其放入視頻中。但不知何故,驗證繼續說輸入的緯度和經度是錯誤的。

我想知道我的var latlngVal是正確還是錯誤。

然後我也做這個腳本,它似乎並沒有工作,要麼..:

var emailVal = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
var email = $("input#email").val(); 
var invalid_email = 'Please type a valid e-mail address'; 

// If e-mail address is not empty - validate 
if (!email == '') { 
    if(!emailVal.test(email)) { 

     // ERROR - customize 

     $('#error').html(invalid_email); 
     return false; 
    } 
}; 

這裏的問題,只是它似乎並沒有檢查電子郵件空,所以請告訴我,這裏的東西也是錯的。如果他們沒有輸入,我不想驗證電子郵件。

回答

7

我冒昧地對您的代碼進行了一些更改。

我改變你的正則表達式:

/^-?([0-8]?[0-9]|90)\.[0-9]{1,6},-?((1?[0-7]?|[0-9]?)[0-9]|180)\.[0-9]{1,6}$/; 

它LAT -90.XXXXXX valids到90.XXXXXX和LNG -180.XXXXXX180.XXXXXX

例子:-85.123456,-100.123456

並檢查電子郵件是空的:

if (email.length !== 0) { 

DEMOhttp://jsfiddle.net/nRha8/2/

+0

你是對的人..:d非常感謝.. – Dimser

+0

@void:你的代碼說 「7.712006399720735,80.6446103515625」 這是假的lat和長! – Gowri

+0

@Philip Jens Bramsted你可以在這裏留下工作代碼..標記爲答案的那個人對所有有效的輸入都是無效的。 –