【问题标题】:Can I call a jScript function from url or when an image changes?我可以从 url 或图像更改时调用 javaScript 函数吗?
【发布时间】:2014-07-18 05:22:22
【问题描述】:

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

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

这里的问题是:如果用户首先输入正确的键,然后由于某种原因单击“选择另一个图像” url,键会改变但输入框不会改变,因此不会进行验证,这可能会让用户误以为输入了正确的键,而实际上它已经改变并且应该重新输入。

在验证码输入框中输入内容(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 中的检查验证码函数。我完全不知道如何做到这一点。

我已经尝试(以及许多其他事情)将其添加到 jScript:

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

但这并没有帮助。任何解决方案的提示将不胜感激!

【问题讨论】:

    标签: image url captcha jscript


    【解决方案1】:

    上面的答案没有用,但给了我一个解决方案的想法。这对我有用...

    功能:

    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>
    

    【讨论】:

      【解决方案2】:

      可以在document ready handler外面定义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);
              });
      

      【讨论】:

      • 不起作用。页面会自行重新加载(index.php -> index.php#),但图像根本不刷新,验证码也未验证。
      • 你复制粘贴代码了吗?我确定它不会起作用-我没有测试它,我只是建议一种方法= P。这个怎么样?
      • 我现在添加了一个有效的答案。您实际上为我指出了正确的方向,但是该链接仍然需要一个带有 return false 的 onclick 以阻止页面重新加载并刷新图像+验证...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多