2014-01-04 4 views
1

Я использую captcha в своей форме входа в систему, и я хочу обновить капчу, когда я нажимаю на свою подпись, но это не работает! мой HTML-код:PHP/JQuery: обновить капчу по клику с помощью jquery

<cite class="fr"> 
    <img id="captcha_img" src="securimage/securimage_show.php" alt="点击图片刷新验证码" /> 
</cite> 

мой код JQuery:

$('#captcha_img').click(function(){ 
    //alert("hh"); 
    $('#captcha_img').attr("src","securimage/securimage_show.php"); 
}); 

Я также найти некоторые документы об этом вопросе и попробовать другие способы, но она по-прежнему не работает, может кто-нибудь дать мне некоторые идеи?

+0

делает это предупреждение шоу при нажатии (если раскомментировать?) –

+0

да, он может? alert "hh" – ChainWay

+0

можете ли вы разместить код securimage/securimage_show.php? –

ответ

1

Оба метода ниже, должны работать (раскомментируйте один за другим, и попробовать его):

jQuery(function ($) { 

    $('#captcha_img').on('click', function() { 
     // $(this).attr("src","securimage/securimage_show.php?"+Math.random()); 
     // $(this).attr("src","securimage/securimage_show.php?"+new Date().getTime()); 
    }); 

}); 
+0

этот wokrs точно! Спасибо! – ChainWay

1

Браузер, вероятно, кэширует изображение. Попробуйте это:

$('#captcha_img').click(function() { 
    var imageUrl = 'securimage/securimage_show.php?' + new Date().getTime(); 
    $(this).attr('src', imageUrl); 
}); 
+0

Я пробую это, но он все еще не работает! – ChainWay

+0

Я обновил код. Попробуй. Помните о '?' до времени. – rgtk

+0

Да, когда я нажимаю изображение, он может обновляться, но он не отображает изображение, вместо этого он отображает «alt» attr ChainWay

0
$('#captcha_img').click(function(){ 
    //alert("hh"); 
    $('#captcha_img').attr("src","securimage/securimage_show.php"); 
    return false; 
}); 

Или использовать e.preventDefault() как

$('#captcha_img').click(function(e){ 
    e.preventDefault(); 
    $('#captcha_img').attr("src","securimage/securimage_show.php"); 
    //return false; 
}); 

скажите мне, если это работает. В этом случае return false будет работать просто отлично, потому что событие не нужно распространять.

+0

извините, не работает – ChainWay

0

DEMO

$(function() { 
    $('#foo').click(swapImages); 
    var secondImg = 'http://digital-photography-school.com/wp-content/uploads/2013/03/Acorn256.png'; 
    function swapImages() { 
     var img = $("<img id='foo' src='" + secondImg + "' />"); 
     $(this).replaceWith(img); 
     $(img).click(swapImages); 
    } 
}); 
Смежные вопросы