【问题标题】:JavaScript Google Map Coordinate ValidationJavaScript 谷歌地图坐标验证
【发布时间】:2012-06-06 16:01:52
【问题描述】:

我有一个表单,您可以在其中选择地图上的一个点,它会填充纬度和经度文本框,或者您可以自己输入坐标。

我需要添加验证以确保用户输入有效范围,但我不确定我是否有正确的 RegEx。这是我正在使用的方法:

var regex_coords = "[-]?[0-9]*[.]{0,1}[0-9]";

// ...

valid_coords: function (number) {
if (number.match(regex_coords) && !isNaN(Number(number))) {
    $("#btnSaveResort").removeAttr("disabled");
    return true;
} else {
    $("#btnSaveResort").attr("disabled", "disabled");
    return false;
}
},

无论我在文本框中输入什么,此函数都会返回 false。

有什么更好的建议吗?

【问题讨论】:

标签: javascript google-maps


【解决方案1】:

纬度和经度有不同的范围:纬度是 (-90,90) 和经度是 (-180,180),所以使用单个正则表达式实际上是行不通的。您可能还想检查纬度是否可以绘制在地图上——这意味着它需要大致位于 (-85,85) 范围内。或者您可能希望将范围限制为包含特定区域的边界矩形。

为什么不明确地测试范围?

function inrange(min,number,max){
    if ( !isNaN(number) && (number >= min) && (number <= max) ){
        return true;
    } else {
        return false;
    };
}

然后,您可以根据需要定制代码。如果纬度和经度都有效,您可能只想启用保存按钮。

valid_coords: function(number_lat,number_lng) {
    if (inrange(-90,number_lat,90) && inrange(-180,number_lng,180)) {
        $("#btnSaveResort").removeAttr("disabled");
        return true;
    }
    else {
        $("#btnSaveResort").attr("disabled","disabled");
        return false;
    }
}

【讨论】:

  • 我想知道纬度和经度范围,所以我将代码更改为您所拥有的。现在的问题是它似乎多次运行 valid_coords 函数,前几次使用正确的值,然后传递了一个对象。我正在尝试追踪它,然后我将发布我的结果并希望将其标记为已检查。谢谢!
  • 看起来不错!我有另一个函数调用相同的有效函数,但在更改地图时传递的是文本框,而不是文本框值。
  • 谢谢,我正在研究正则表达式,完全忘记了我可以用这样的方法检查它!
【解决方案2】:

您的正则表达式看起来不正确。试试:

var regex_coords = /\-?[0-9]+[\.]{0,1}[0-9]*/;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-05
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多