0

Google マップを使用して都市間の距離を計算しています。その距離値をいくつかの基本的な計算に使用する必要があります。距離は「Angloamerican」形式 (1,234.00) である必要がありますが、メートル法である必要があります。したがって、マドリッド - ベルリンのクエリに対する Google マップの回答は、次の 2 つのいずれかになります。

a) <span jscontent="distance['text']" jsdisplay="distance" jstcache="7">2.320,1 km</span>
b) <span jscontent="distance.text" jstcache="23">2.320,1 km</span>

スパンの「クラス」(jstcache は 7 または 23) の違いと、「id」または「name」属性がないことに注意してください。

私が達成したいことは次のとおりです。

1) これらの Google マップの距離値を "Angloamerican" 形式 (2,320 km) または (さらに良い) 小数点記号としてドットのみを使用する千単位区切り記号のない形式 (2320.1 km) に変換します。

2) フィルタリングされた値を使用して、distance というテキスト フィールドに入力します。

ウェブ全体を検索しましたが、正確な答えは見つかりませんでした。この投稿が最も役に立ちました。

フォーム送信時に非表示のフォーム要素の値にテキスト フィールドの値を入力する (jQuery)

自動入力部分は少し役に立ちましたが、この Google マップ コードと組み合わせて機能させることはできません。これが私の現在のコードです:

<head>
...
<script type="text/javascript">
function submitMyForm(){
$('#distance').val($('jstcache^=7').val());
$('#Googlemap').submit();
}
</script>
...
</head>

<body>
...
<form id="myform">
<input type="text" id="distance" name="distance" value="" />
</form>
...
</body>
4

2 に答える 2

1

値を取得するには:

var dist = $('span[jstcache=7]').val();

ローカライズするには:

var parts = dist.split(',');
dist = parts[0].replace('.','') + '.' + parseInt(parts[1],10);
于 2011-02-17T20:57:17.983 に答える
1

通常、これは JavaScript の string .replace() 関数を使用して行うことができます。この場合、スワップを行っているため、少しトリッキーです: コンマのピリオド、ピリオドのコンマ。これは、中間値を使用する必要があることを意味します。アンダースコアを使用した実際の例は、次のようになります。

<script type="text/javascript">
function submitMyForm(){
    var val = $('[jstcache=7]').text(); // get text content of <span jstcache="7">

    // Replace using regex instead of strings, to catch more than the first match
    val = val.replace(/\./g, "_");
    val = val.replace(/,/g, ".");
    val = val.replace(/_/g, ",");

    $('#distance').val(val);
    $('#Googlemap').submit();
}
</script>
于 2011-02-17T21:00:46.020 に答える