0
我有如下所示的脚本,并在http://jsbin.com/vuliw/1重复。jQuery验证插件和异步更新
输入#address
经验证为(4)个或更多字符,并且在给定几个字符的情况下也会自动填充。
我的问题是在输入填充之前验证它。要复制,请输入几个字符(小于4),然后单击其中一个结果。虽然我的示例使用Google Maps API,但我希望能够通过任何异步更新来获得这些结果。
如何验证最小长度?用户选择一个项目后
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Validation</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js" type="text/javascript"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
address.value='';
var validator=$("#myForm").validate({rules: {address: {"minlength": 4,"required":true}}});
var autocomplete = new google.maps.places.Autocomplete(document.getElementById('address'));
});
</script>
</head>
<body>
<form id="myForm" action="bla.php" method="post">
<input id="address" name="address" type="text">
</form>
</body>
</html>
谢谢约翰,似乎工作,但我仍在测试。你能解释一下它如何让它起作用吗? – user1032531
由于事情是异步的,您需要确保您的支票在Google完成其工作后发生。 G会触发一个事件(place_changed)来告诉您,这是从用户选择中自动填充列表中提取出来的。所以,如果我们确保在G完成后每次运行检查,它都不会干扰其他任何事情。最糟糕的是,你正在运行额外的不必要的检查,但这是由于validate()插件如何监听事件。这需要您在该库内部进行核心更改以删除ms或两个额外检查IFF用户选择自动完成项目。 –
啊,我明白了。验证插件首先验证给定的元素并显示一个错误,然后Google做它的事情,然后整个表单被验证,但这次给定的元素不再显示错误。但是,表单上的其他元素将在用户需要查看错误之前进行验证。可以只使用'$(“#myForm”)。valid(“address”);'?我试过但没有运气。 – user1032531