我一直在使用验证码在我的网站上开发联系表单。这里可以看到一个例子:
几年前,如果用户需要重新加载验证码图像,那么我唯一的选择是重新加载整个表单。
由于我开始使用jquery,现在是时候用一个只刷新图像的方法替换它。
所以我写了这个小片段:
$(document).ready(function() {
$('#creload').click(function() {
$.ajax({
type: "POST",
url: "/en/KDpg_Captcha.html",
async: true,
success: function(ret) {
$('#cimg').attr('src', ret);
}
});
});
});
其中#creload
是请求重新加载的链接的ID,而#cimg
是实际图片的ID。
我发现如果填写其他表单字段然后请求重新加载,则重置其他字段。这不是理想的结果。
我能错过什么?
答案 0 :(得分:2)
如果#creload是一个链接,你需要阻止它执行默认操作,即打开href属性中的内容。添加e.preventDefault()会停止此操作。不要忘记添加 e 作为参数:
$('#creload').click(function(e) {
e.preventDefault();
// ...
答案 1 :(得分:2)
点击以下链接时:
<a href id="creload">here</a>
当前页面被解释为href
并重新加载页面。
您可以按照TJ描述的方式将function(e)
和e.preventDefault()
添加到click
处理程序,或者更简单地将链接更改为:
<a href="#" id="creload">here</a>
或者,如果您不希望#
链接将访问者带到页面顶部:
<a href="javascript:" id="creload">here</a>