Замените точки и запятые в поле, а затем используйте это значение для автоматического заполнения другого поля с помощью jquery. - PullRequest
0 голосов
/ 17 февраля 2011

Я использую Google Maps для расчета расстояния между городами. Мне нужно использовать это значение расстояния для некоторых базовых расчетов. Расстояние должно быть в «англо-американском» формате (1234,00), но в метрической системе. Итак, ответ Google Maps для Мадрида - Берлинский запрос будет одним из этих двух:

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>

Обратите внимание на различия в span-классах (jstcache 7 или 23) и отсутствие каких-либо атрибутов "id" или "name".

Что я хочу сделать, это:

1) Преобразовать эти значения расстояния Google Maps в формат «англоамериканский» (2320 км) или (что еще лучше) без разделителя тысяч, в котором в качестве десятичного разделителя используются только точки (2320,1 км)

2) Используйте это отфильтрованное значение для заполнения текстового поля, называемого расстоянием

Я искал по всей сети, но не нашел точного ответа. Этот пост был самым полезным:

Заполните значение скрытого элемента формы значением текстового поля в форме отправки (jQuery)

Это немного помогло мне с автозаполнением, но я не могу заставить его работать в сочетании с этим кодом Google Maps. Вот мой текущий код:

<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>

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Как правило, вы можете сделать это с помощью функции 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>
1 голос
/ 17 февраля 2011

Чтобы получить значение:

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

Для локализации:

var parts = dist.split(',');
dist = parts[0].replace('.','') + '.' + parseInt(parts[1],10);
...