jCaptcha - 仅刷新图像而不是整页

时间:2011-04-28 17:31:31

标签: captcha

我在我们的网站上使用jCaptcha(http://jcaptcha.sourceforge.net/)。问题是有时读取图像非常困难。因此,我们计划在jcaptcha图像旁边提供一个名为“REFRESH”的按钮,并且在单击REFRESH按钮时,它必须仅刷新jcaptcha图像而不是整个页面/ portlet。我们怎么能这样做?

5 个答案:

答案 0 :(得分:2)

这就是我用JQuery解决它的方法,它将取代图像。 alert()就是为了显示新的文件名,当然可以删除。代码在grails中使用了jquery插件,但是在jquery中显示了如何刷新图像。

<div>
<jcaptcha:jpeg name="captchaImage"/>

<a href="#" id="refreshCaptcha">Refresh captcha</a>
<jq:jquery>
   $("#refreshCaptcha").click(function() {
      $("#captchaImage").fadeOut(500, function() {
         var captchaURL = $("#captchaImage").attr("src");
         captchaURL = captchaURL.replace(captchaURL.substring(captchaURL.indexOf("=")+1, captchaURL.length), Math.floor(Math.random()*9999999999));
         alert(captchaURL);
         $("#captchaImage").attr("src", captchaURL);
      });
      $("#captchaImage").fadeIn(300);
});
</jq:jquery>
</div>

答案 1 :(得分:2)

在JSP中进行此更改:

<img src="jcaptcha" id="captcha_image"/> <a href="#" onclick="reloadCaptcha()" alt="reload"width="40" height="40">Refresh</a> 

添加Javascript函数,如:

function reloadCaptcha(){
        var d = new Date();
        $("#captcha_image").attr("src", "jcaptcha?"+d.getTime());
    }

答案 2 :(得分:0)

您必须加载图像和刷新按钮。比你应该只能刷新iframe。但我不知道你是如何进行验证的。

答案 3 :(得分:0)

为img标签设置一个id,让它调用一个javascript函数:

<img src="jcaptcha.jpg" id="captchaImage"/>

javascript函数:

<script type="text/javascript">
    function refresh() 
    {
        var captchaImage=document.getElementById("captchaImage");
        captchaImage.src="jcaptcha.jpg";    
    }
</script>

答案 4 :(得分:0)

这样可以正常工作,因为我在我的项目中实现了这个,只需在点击该按钮时创建一个按钮,它就会出现在你所做的代码块之下

<script type="text/javascript">
function refresh() 
{
var image=document.getElementById("kaptchaImage");
image.src="<%=request.getContextPath()%>/kaptcha.jpg?"+Math.floor(Math.random()*100)           
}
</script>