【问题标题】:Is there a way to validate if a user types a street address with Google autocomplete?有没有办法验证用户是否使用 Google 自动完成输入了街道地址?
【发布时间】:2017-05-16 23:39:11
【问题描述】:

在我的注册表单中,我有一个字段要求用户输入他/她的地址和城市(自动完成)。

问题是用户也可以只输入他/她的城市而不输入街道并提交表单。

有没有人可以解决这个问题?

<script>
  var input = document.getElementById('adres');
  var autocomplete = new google.maps.places.Autocomplete(input,{componentRestrictions: {country:'be'}});
  google.maps.event.addListener(autocomplete, 'place_changed', function(){
  var place = autocomplete.getPlace();
  })
</script>

【问题讨论】:

  • 您使用的是哪种自动完成功能?分享一些代码...
  • @Dekel 我添加了一些代码。这些信息对您来说足够了吗?

标签: javascript ruby-on-rails google-maps autocomplete street-address


【解决方案1】:

您可以使用autocomplete.setTypes(['address']); 在自动完成中只允许地址。

city 不是地址(它是一个区域),因此自动完成功能不允许。

var input = document.getElementById('adres');
var autocomplete = new google.maps.places.Autocomplete(input,{componentRestrictions: {country:'be'}});
autocomplete.setTypes(['address']);
google.maps.event.addListener(autocomplete, 'place_changed', function(){
    var place = autocomplete.getPlace();
})

【讨论】:

  • 嗯,这行不通。结果,它仍然返回没有街道的城市。任何用户都可以只选择城市并登录,但这将是解决此问题的好方法。谢谢
  • 如果你尝试setTypes(['(regions)'])会发生什么?你会写街道名称吗? (基本上你不应该,所以如果你这样做 - 那里有一些问题......)
  • 我看到你把autocomplete.setTypes(['address']);从最后一行换成了第三行,现在可以了!谢谢大佬,天才!真的很感激。
  • 其实应该不会影响任何事情
  • 如果我将它替换到最后一行,它确实会影响它......不知道为什么。
【解决方案2】:

我很好奇,您是要求对方输入完整的地址还是在各个字段中分开?比如一个代表街道,另一个代表州、城市等,还是只是一个字段?

如果您询问地址并且人们一直只输入城市,例如,将其分成两个输入,一个用于地址名称,另一个用于数字,您可以询问邮政编码。重要的是让他们知道他们需要正确添加地址。

您也可以进行验证,您可以在字段中输入“地址必须有一个'#'”以确保有一个门牌号(Idk,最后一个就是一个例子)

【讨论】:

  • 只有一个字段。确实,将其设为两个字段可以解决问题,但我想知道是否有更简单的解决方法。谢谢
猜你喜欢
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 2018-11-04
  • 2018-09-15
  • 2021-04-19
相关资源
最近更新 更多