表单提交时不会覆盖默认值

时间:2011-11-16 18:11:38

标签: php javascript drupal geolocation hidden-field

我在表单中有一个隐藏字段,我使用Drupal的表单API创建,如下所示:

$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 :(得分:0)

这就是我所做的:

1)暂时禁用js。 2)使用xdebug查看表单提交之前和之后的值。这应该有助于查看是否出现问题。

干杯, 维沙尔

答案 1 :(得分:0)

不要使用#default_value,而应考虑使用#value - 因为这是发布的值。

答案 2 :(得分:0)

最终通过使用getElementById()方法而不是getElementsByName()方法解决了它。由于某种原因,该名称不起作用。谢谢大家的帮助。