gmaps-autocomplete-rails write Lang + Long 写入隐藏域
gmaps-autocomplete-rails write Lang + Long written to hidden field
我希望有人能帮助我,我的 gmaps-autocomplete-rails 工作正常,但我对如何将经度和纬度写入表单提交的隐藏字段感到困惑.
我可以把它写成一个只是不能使指南的这一部分正面或反面的人
以下默认方法可以通过配置替换:
位置输出器
更新UI
更新地图
这些方法用于控制gmaps数据如何用于更新页面上的UI,例如位置输出和地图位置更新。定制这些需要的。
默认逻辑(取自 GmapsCompleterDefaultAssist)是:
defaultUpdateMap: (geometry) ->
map = @map
marker = @marker
map.fitBounds(geometry.viewport) if map
marker.setPosition(geometry.location) if marker
# fill in the UI elements with new position data
defaultUpdateUI: (address, latLng) ->
$(@inputField).autocomplete 'close'
@debug 'country', @country
updateAdr = address.replace ', ' + @country, ''
updateAdr = address
@debug 'updateAdr', updateAdr
$(@inputField).val updateAdr
@positionOutputter latLng
defaultPositionOutputter: (latLng) ->
$('#gmaps-output-latitude').html latLng.lat()
$('#gmaps-output-longitude').html latLng.lng()
我认为我需要做的就是将最后一部分更改为 .val 而不是 .html
但是我不知道在哪里以及如何将它添加到 coffeescript 中。
如果我直接写入隐藏字段,我会得到以下信息:
<input id="gmaps-output-longitude" type="hidden" name="submission[longitude]">-019019992</input>
这显然不会在表单中传递,因为它不是 value=""
我试过写入 span 并进行更改以写入隐藏字段,但也没有任何乐趣。
jQuery ->
completer = new GmapsCompleter
inputField: '#gmaps-input-address'
errorField: '#gmaps-error'
completer.autoCompleteInit
country: "us"
$('#gmaps-output-longitude').on('change', updateChange)
updateChange = ->
$('#submission_longitude').val($('#gmaps-output-longitude'))
$('#submission_latitude').val($('#gmaps-output-latitude'))
非常感谢任何建议。
原来我漏掉了一点,但为了将来参考覆盖默认行为,您需要包含辅助选项并参考 coffeescript 扩展。
这是我最终的工作 coffeescript 都在一个文件中,只要确保你缩进 class。
jQuery ->
completer = new GmapsCompleter
inputField: '#gmaps-input-address'
errorField: '#gmaps-error'
assist: MyCompleterAssist
completer.autoCompleteInit
country: "us"
class MyCompleterAssist extends GmapsCompleterDefaultAssist
positionOutputter: (latLng) ->
$('#gmaps-output-latitude').val latLng.lat()
$('#gmaps-output-longitude').val latLng.lng()
我希望有人能帮助我,我的 gmaps-autocomplete-rails 工作正常,但我对如何将经度和纬度写入表单提交的隐藏字段感到困惑.
我可以把它写成一个只是不能使指南的这一部分正面或反面的人
以下默认方法可以通过配置替换:
位置输出器 更新UI 更新地图 这些方法用于控制gmaps数据如何用于更新页面上的UI,例如位置输出和地图位置更新。定制这些需要的。
默认逻辑(取自 GmapsCompleterDefaultAssist)是:
defaultUpdateMap: (geometry) ->
map = @map
marker = @marker
map.fitBounds(geometry.viewport) if map
marker.setPosition(geometry.location) if marker
# fill in the UI elements with new position data
defaultUpdateUI: (address, latLng) ->
$(@inputField).autocomplete 'close'
@debug 'country', @country
updateAdr = address.replace ', ' + @country, ''
updateAdr = address
@debug 'updateAdr', updateAdr
$(@inputField).val updateAdr
@positionOutputter latLng
defaultPositionOutputter: (latLng) ->
$('#gmaps-output-latitude').html latLng.lat()
$('#gmaps-output-longitude').html latLng.lng()
我认为我需要做的就是将最后一部分更改为 .val 而不是 .html
但是我不知道在哪里以及如何将它添加到 coffeescript 中。
如果我直接写入隐藏字段,我会得到以下信息:
<input id="gmaps-output-longitude" type="hidden" name="submission[longitude]">-019019992</input>
这显然不会在表单中传递,因为它不是 value=""
我试过写入 span 并进行更改以写入隐藏字段,但也没有任何乐趣。
jQuery ->
completer = new GmapsCompleter
inputField: '#gmaps-input-address'
errorField: '#gmaps-error'
completer.autoCompleteInit
country: "us"
$('#gmaps-output-longitude').on('change', updateChange)
updateChange = ->
$('#submission_longitude').val($('#gmaps-output-longitude'))
$('#submission_latitude').val($('#gmaps-output-latitude'))
非常感谢任何建议。
原来我漏掉了一点,但为了将来参考覆盖默认行为,您需要包含辅助选项并参考 coffeescript 扩展。
这是我最终的工作 coffeescript 都在一个文件中,只要确保你缩进 class。
jQuery ->
completer = new GmapsCompleter
inputField: '#gmaps-input-address'
errorField: '#gmaps-error'
assist: MyCompleterAssist
completer.autoCompleteInit
country: "us"
class MyCompleterAssist extends GmapsCompleterDefaultAssist
positionOutputter: (latLng) ->
$('#gmaps-output-latitude').val latLng.lat()
$('#gmaps-output-longitude').val latLng.lng()