自定义jQuery的问题.验证器规则

Problem with custom jQuery.validator rule

本文关键字:规则 验证 问题 jQuery 自定义      更新时间:2023-09-26

我对这段代码有一个问题,我似乎无法弄清楚:

$.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');

它的工作原理是使一个不正确的地址无效(一个不能被谷歌地理编码)。问题是,即使它返回true,我仍然得到'无效地址'。有什么问题吗?

内部回调返回
geocoder.geocode({address: address}, function (results, status) {
    return that.optional(element) || status == google.maps.GeocoderStatus.OK;
});

Not from validator function.

此外,我相信geocoder.geocode执行异步ajax查询,因此在离开验证器时,您将无法判断您的位置是否"可地理编码"。对于这种情况,jQuery验证中应该有一个特定的验证器,称为remote或其他什么,它基于ajax查询的结果进行验证。