1

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

联系表

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

自从我开始使用 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是请求重新加载的链接#cimg的 id,是实际图像的 id。

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

我会错过什么?

4

2 回答 2

2

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

$('#creload').click(function(e) {
    e.preventDefault();
    // ...
于 2012-04-13T18:37:56.653 回答
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>
于 2012-04-13T18:39:10.130 回答