我一直在使用验证码在我的网站上开发联系表格。一个例子可以在这里看到:

contact form

几年前,如果用户需要重新加载验证码图像,那么我唯一的选择就是重新加载整个表单。

自从我开始使用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。

我发现的是,如果其中一个填写其他表单字段然后请求重新加载,则其他字段将被重置。这不是期望的结果。

我可能会缺少什么?

最佳答案

如果#creload是链接,则需要阻止它执行默认操作,即打开href属性中的内容。添加e.preventDefault()将停止此操作。不要忘记添加e作为参数:

$('#creload').click(function(e) {
    e.preventDefault();
    // ...

09-29 20:15