我可以从url或图像更改时调用javaScript函数吗?

时间:2014-07-17 20:10:02

标签: image url captcha jscript

我正在使用免费的Securimage软件包在我的注册表单中进行验证码验证。

我正在使用jScript / AJAX / PHP在用户输入代码时检查代码,并在输入框旁边输出“不正确”或“正确”,如果它留空或不正确则给它一个红色边框。 / p>

这里的问题是:如果用户首先输入正确的密钥,那么由于某种原因点击“选择另一个图像”网址,密钥将会改变,但输入框不会改变,因此不会被验证,这可能会使用户误以为在实际更改时输入了正确的密钥,并且应该重新输入。

当在验证码输入框(keyup)中输入内容或完成输入(模糊)时,将调用检查验证码功能。代码看起来像这样:

$(document).ready(function()
{
    var chckcaptcha = function()
    {
        var captcha = encodeURIComponent($("#captcha").val());
        $.ajax(
        {
            type: "POST",
            url: "lib_ajax/somescript.php",
            data: "captcha="+ captcha,
            success: function(msg_captcha)
            {
                $("#status_captcha").ajaxComplete(function(event, request, settings)
                {
                    // ... some validation code here
                });
            }
        });
    }
    $("#captcha").bind('keyup',chckcaptcha)
    $("#captcha").blur(chckcaptcha);
});

图片:

<img src="/lib_class/securimage/securimage_show.php" alt="CAPTCHA Image" name="captcha_img" width="100%" height="100" id="captcha_img" />

刷新网址:

<a href="#" onclick="document.getElementById('captcha_img').src = '/lib_class/securimage/securimage_show.php?' + Math.random(); return false">refresh image</a>

我需要一种方法来在单击该URL时或在创建新图像时调用jScript中的check captcha函数。我完全不知道如何做到这一点。

我已尝试(在许多其他方面)将其添加到jScript:

$("#captcha_img").change(chckcaptcha);

但这没有帮助。任何解决方案的提示都将非常感谢!

2 个答案:

答案 0 :(得分:0)

您可以定义chckcaptcha函数和在文档就绪处理程序外刷新图像的函数,然后在刷新图像时连续调用它们吗?

    <a href="#" id="refresh-link">refresh image</a>
        ...        


        function chckcaptcha()
            {
                var captcha = encodeURIComponent($("#captcha").val());
                $.ajax(
                {
                    type: "POST",
                    url: "lib_ajax/somescript.php",
                    data: "captcha="+ captcha,
                    success: function(msg_captcha)
                    {
                        $("#status_captcha").ajaxComplete(function(event, request, settings)
                        {
                            // ... some validation code here
                        });
                    }
                });
            }

        $(document).ready(function()
        {
            $("#refresh-link").click(function() { 
document.getElementById('captcha_img').src = '/lib_class/securimage/securimage_show.php?' + Math.random();

                chckcaptcha();
            });
            $("#captcha").bind('keyup',chckcaptcha);
            $("#captcha").blur(chckcaptcha);
        });

答案 1 :(得分:0)

上述答案并不奏效,但给了我一个解决方案的想法。这对我有用......

功能:

function refreshImage()
{
    // New image
    document.getElementById('captcha_img').src = 
    '/lib_class/securimage/securimage_show.php?' + Math.random();
    // New validation
    chckcaptcha();
}

刷新链接:

<a href="#" id="refresh-link" onClick="refreshImage(); return false">refresh image</a>