我遇到了这个代码的问题,我似乎无法弄清楚:
$.validator.addMethod('street_address', function (value, element) {
var address = value + ', ' + $(element).parent().parent().find("#venue_city_id option:selected").text(),
geocoder = new google.maps.Geocoder(),
that = this;
geocoder.geocode({address: address}, function (results, status) {
return that.optional(element) || status == google.maps.GeocoderStatus.OK;
});
}, 'invalid address');
它可以使一个不正确的地址无效(一个不能由Google进行地理编码的地址)。问题是即使它返回true,我仍然得到'无效地址'。关于问题可能是什么的任何想法?
答案 0 :(得分:1)
您从
中的回调内部返回geocoder.geocode({address: address}, function (results, status) {
return that.optional(element) || status == google.maps.GeocoderStatus.OK;
});
不是来自验证器功能。
此外,我相信geocoder.geocode
执行异步ajax查询,因此在离开验证器时,您将无法判断您的位置是否是“可地理编码”的。在jQuery验证中应该有一个特定的验证器,称为remote
或其他东西,它根据ajax查询的结果进行验证。