停用智能街道功能
Deactivating Smarty Streets functionality
我有一个表单,我正在使用Smarty Streets Live Address验证。一般来说,它运行良好。但是,如果用户已开始输入地址信息,则实时地址验证可能会妨碍您。遇到的最具体问题是输入了地址信息,但用户选择取消表单。实时地址验证优先于操作,并阻止停用验证和清除表单的尝试。
可以在此处找到该问题的小提琴示例。
<form>
<input type="text" id="street" name="street" placeholder="street"><br>
<input type="text" id="city" name="city" placeholder="city"><br>
<input type="text" id="state" name="state" placeholder="city"><br>
<input type="text" id="ZIP" name="ZIP" placeholder="ZIP"><br>
<button id="btnCancel">Cancel</button>
</form>
<script>
var ss = jQuery.LiveAddress({ key: '5640108848289556771', debug: true })
$(function () {
$("#btnCancel").click(function (e) {
e.preventDefault();
alert("click");
ss.deactivate();
});
});
</script>
如果未输入任何数据,则 click 事件按预期工作,但输入地址信息后,实时地址验证会阻止事件处理程序触发。
单击取消按钮时,表单应被清除或返回到上一页,但实时地址验证将接管并阻止所有其他操作。
如何在按钮单击事件中停用实时地址验证?
您的取消按钮被映射为插件端的"提交"按钮。这意味着插件在单击时会识别该按钮以调用验证。验证将在实际执行您所看到的任何其他操作之前进行。有两种解决方案可以解决此问题。
- 向表单添加另一个按钮。插件使用此选择器查找提交按钮
"[type=submit], [type=image], [type=button]:last, button:last"
第 48 行。如果您添加另一个按钮,则取消按钮将是免费的,单击时不会调用验证。 - 配置插件时,请将提交验证设置为 false。请参阅此处的文档。这将禁用对表单上所有按钮的验证。仅当您单击插件复选标记气泡时,才会进行验证。
注意:我在SmartyStreets工作
如果最后一个元素是一个按钮,它不起作用(即使我使用 event.stopPropagation();
,所以我使用了 A 链接。
为此,我映射了地址字段,分配了一个地址ID,然后使用了activate()和deactivate()函数。 这使我能够允许管理员用户绕过验证并在不输入任何内容的情况下发布表单。它检查.smarty-tag
复选标记的可见性,以确定是否应激活或停用验证。
<script type="text/javascript">
var liveaddress = jQuery.LiveAddress({
key: "key",
debug: true,
addresses: [{
id: 'AddressID',
street: '#Address',
street2: '#Address2',
city: '#City',
state: '#State',
zipcode: '#Zip',
country: '#Country'
}]
});
$(function(){
/* If re-editing and address is pre-populated, don't revalidate */
liveaddress.on("MapInitialized", function(event, data, previousHandler){
if ($('#Address').val().length !== 0){
liveaddress.deactivate('AddressID');
}
});
$('#toggleSS').click(function(e){
e.preventDefault();
if ($('.smarty-tag:visible').length){
liveaddress.deactivate('AddressID');
} else {
liveaddress.activate('AddressID');
}
});
/* If editing address, auto-enable verification */
$('#Address').keyup(function(){
if (!$('.smarty-tag:visible').length){
liveaddress.activate('AddressID');
}
});
});
</script>
<input type="submit" value="Save"> <a href="#" id="toggleSS">Toggle Verification</a>
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 正在获取select上的功能id
- Rhino打印功能
- 使用(navigator.geolocation)检测浏览器功能错误
- 主体单击删除功能上的输入框宽度
- 停用智能街道功能
- 地理围栏功能-开放的街道地图与开放的层