Значение по умолчанию не переопределяется при отправке формы - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть скрытое поле внутри формы, которое я создаю с помощью API форм Drupal, например:

$form['position'] = array(
  '#type' => 'hidden',
  '#default_value' => '57.149953,-2.104053',
  '#attributes' => array(
    'id' => 'geoposition',
  )
);

Когда я загружаю страницу, на которой отображается форма, у меня немногоJavaScript, который редактирует скрытое поле следующим образом:

if(navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(getPosition, noPosition, 10);
}

function getPosition(position) {
  var pos = document.getElementsByName("position");
  pos.value = position.coords.latitude + "," + position.coords.longitude;
  alert(pos.value);
}

Теперь последний оператор в этом фрагменте фактически выводит правильное значение текущей позиции пользователя.Однако, когда я отправляю форму, значение, передаваемое на сервер для манипуляции, является значением по умолчанию, а не обновленным значением.Значение, используемое после отправки формы, подбирается так:

$map_field .= 'src="http://maps.google.co.uk/maps?q='.$form_state['values']['position'].'&amp;output=embed"></iframe>';

Есть идеи?

Спасибо,

Ответы [ 3 ]

0 голосов
/ 17 ноября 2011

Вместо использования #default_value рассмотрите возможность использования #value - потому что это значение, которое публикуется.

0 голосов
/ 18 ноября 2011

В конце концов решил это, используя метод getElementById () вместо метода getElementsByName (). По какой-то причине название не работает. Спасибо всем за помощь.

0 голосов
/ 16 ноября 2011

Это то, что я буду делать:

1) Отключить js на данный момент.2) Используйте xdebug, чтобы увидеть значение до и после отправки формы.Это должно помочь увидеть, если что-то идет не так.

Ура, вишал

...