3

マップ上のポイントを選択して、latおよびlonテキストボックスに入力するか、自分で座標を入力できるフォームがあります。

ユーザーが有効な範囲を入力していることを確認するために検証を追加する必要がありますが、正しい正規表現があるかどうかわかりません。これが私が使用している方法です:

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を返します。

より良い方法について何か提案はありますか?

4

2 に答える 2

14

緯度と経度の範囲は異なります。緯度は(-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;
    }
}
于 2012-06-06T17:31:12.730 に答える
0

正規表現が正しくないようです。試す:

var regex_coords = /\-?[0-9]+[\.]{0,1}[0-9]*/;
于 2012-06-06T16:05:29.993 に答える