Javascript 等待GoogleGeocoder会产生一个jquery自定义验证方法
我知道Google的Geocoder服务是异步的,但我需要一种方法,在Google Geocoder结果返回之后而不是之前,向我的自定义jQuery验证方法返回true或false。(例如,服务将查找邮政编码,如果找到,则返回true,否则返回false) 编辑-jQuery验证Javascript 等待GoogleGeocoder会产生一个jquery自定义验证方法,javascript,jquery,google-maps,jquery-validate,google-geocoding-api,Javascript,Jquery,Google Maps,Jquery Validate,Google Geocoding Api,我知道Google的Geocoder服务是异步的,但我需要一种方法,在Google Geocoder结果返回之后而不是之前,向我的自定义jQuery验证方法返回true或false。(例如,服务将查找邮政编码,如果找到,则返回true,否则返回false) 编辑-jQuery验证远程方法是这样做的吗 目前我有一组元素规则,但是当我在下面测试代码时,getLocation方法会在代码加载后立即调用,而不是像我所希望的那样输入第5位数字 $(“#位置”)。规则(“添加”{ 要求:正确, 最小长度:5
远程方法是这样做的吗
目前我有一组元素规则,但是当我在下面测试代码时,getLocation
方法会在代码加载后立即调用,而不是像我所希望的那样输入第5位数字
$(“#位置”)。规则(“添加”{
要求:正确,
最小长度:5,
最大长度:5,
信息:{
必需:“必需输入”,
minlength:jQuery.validator.format(“请注意,{0}个字符是必需的”),
maxlength:jQuery.validator.format(“请注意,{0}个字符是必需的”)
},
远程:getLocation()
});
函数getLocation(){
var i=0;
}
这是我的自定义方法
$.validator.addMethod(“validateZipCode”,函数(值,元素){
var isValidZipCode=GetGoogleGeocoderResultsByZip(值);
返回zipCodeIsValid;
}“无效位置”);
//地理代码的结果是这样的,但我需要等待返回true/false
函数GetGoogleGeocoderResultsByZip(zipCode){
var geocoder=new google.maps.geocoder();
geocoder.geocode(“组件限制”:{
“国家”:“美国”,
“postalCode”:zipCode
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
如果(results.length>=1){
返回true;
}
返回false;
}
}
};
,拉动默认的onkeyup
功能,并为您的超车进行修改
$("#contact").validate({
onkeyup: function(element, event) {
if (element.name == "zip-code") {
return; // no onkeyup validation at all
} else {
// default onkeyup validation in here
var excludedKeys = [
16, 17, 18, 20, 35, 36, 37,
38, 39, 40, 45, 144, 225
];
if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
return;
} else if ( element.name in this.submitted || element.name in this.invalid ) {
this.element( element );
}
}
},
....
在下面的概念验证演示中,点击submit
按钮首先跳过“lazy”验证,然后比较两个字段的行为。第一个字段是在每个keyup
事件上验证电子邮件地址。第二个字段根本不在keyup
事件上验证电子邮件,只在focusout
和submit
上验证
演示:“代码片段”用于在此页面中运行JavaScript代码。由于您无法在此页面上运行代码,我已删除该代码段。如果您只想在输入第5位数字后运行验证,则必须更改触发验证的方式。请尝试将onkeyup
设置为false
…然后验证将仅在focusout
和submit
事件。如果您想将此行为限制为一个字段,则需要为onkeyup
编写一个包含条件的自定义函数。您知道在哪里可以找到onkeyup自定义函数的示例吗?您可以在插件的源代码中查看该函数。