我希望有人可以帮助我,我的gmaps-autocomplete-rails工作正常,但是我很难理解如何将经度和纬度写入隐藏字段以便提交表单。
我可以把它写成一个只是无法做出这部分指南的正面或反面
以下默认方法可以由配置替换:
positionOutputter updateUI updateMap 这些方法用于控制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>
显然没有在表单中传递,因为它不是值=“”
我已经尝试过写一个跨度并进行改变以写入隐藏的vield,但也没有欢乐。
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'))
任何建议都非常感谢。
答案 0 :(得分:1)
事实证明我错过了一点,但是为了将来参考覆盖默认行为,您需要包含辅助选项和带有coffeescript扩展的引用。
这是我最后一份工作的coffeescript,只需要确保你在课堂上出类拔萃。
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()