javascript – 重新加载验证码图片

前端之家收集整理的这篇文章主要介绍了javascript – 重新加载验证码图片前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 PHP脚本生成一个png图像,其中验证码为图像文本.
session_start();   
$captchanumber = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz'; 
$captchanumber = substr(str_shuffle($captchanumber),8); 
$_SESSION["code"] = $captchanumber; 
$image = imagecreatefromjpeg("cap.jpg");     
$black  = imagecolorallocate($image,160,160);   
$font = '../assets/fonts/OpenSans-Regular.ttf';  
imagettftext($image,20,35,27,$black,$font,$captchanumber);   
header('Content-type: image/png');    
imagepng($image);
imagedestroy($image);

我想通过jQuery或JavaScript重新加载图像,所以我使用这样的东西:

$(document).ready(function(e) {
    $('.captcha').click(function(){
        alert('yolo');
        var id = Math.random();
        $(".captcha").replaceWith('<img class="captcha" src="img/captcha.PHP?id='+id+'" />');
        id ='';

    });
});

场:

<img class="captcha" src="img/captcha.PHP">

作为第一次尝试,它的工作原理,但在那之后,如果我再次点击该字段,它将不再工作,我不知道为什么.

解决方法

您正在用新元素替换dom元素,它将销毁所有附加的事件处理程序.

方法1:您可以通过使用event delegation来监听动态添加的元素事件来解决此问题.

$(document).ready(function(e) {
    $('body').on('click','.captcha',function(){
        alert('yolo');
        var id = Math.random();
        $(this).replaceWith('<img class="captcha" src="img/captcha.PHP?id='+id+'" />');
    });
});
$(document).ready(function(e) {
  $('body').on('click',function() {
    alert('yolo');
    var id = Math.random();
    $(this).replaceWith('<img class="captcha" src="img/captcha.PHP?id=' + id + '" />');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img class="captcha" src="img/captcha.PHP">

方法2:只需用新url更新img src属性,而不是替换整个元素.

$(document).ready(function(e) {
    $('.captcha').click(function(){
        alert('yolo');
        var id = Math.random();
        $(this).attr('src','img/captcha.PHP?id='+id);
    });
});
$(document).ready(function(e) {
  $('.captcha').click(function() {
    alert('yolo');
    var id = Math.random();
    $(this).attr('src','img/captcha.PHP?id=' + id);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img class="captcha" src="img/captcha.PHP">

方法3:您也可以使用与以前相同的逻辑使用纯JavaScript来完成它.

document.querySelector('.captcha').addEventListener('click',function() {
  alert('yolo');
  var id = Math.random();
  this.setAttribute('src','img/captcha.PHP?id=' + id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img class="captcha" src="img/captcha.PHP">

方法4:将onClick属性设置为元素并使用纯JavaScript处理click事件,您需要将其作为参数传递以引用元素.

function captcha(ele) {
  alert('yolo');
  var id = Math.random();
  ele.setAttribute('src','img/captcha.PHP?id=' + id);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img class="captcha" onclick="captcha(this)" src="img/captcha.PHP">
原文链接:https://www.f2er.com/js/159588.html

猜你在找的JavaScript相关文章