2012-01-11 21 views
6

Bir recaptcha görüntüsünü yeniden yüklemek için çağrılan aşağıda bir işlev var. Çalışır, görüntüyü yeniden yükler, ancak bundan sonra hiçbir şey yapmayacaktır. Temel olarak, bu formda bu recaptcha olan küçüktür, ben de onu küçümsedim ve büyütmek için tıklamaya izin verdim. Kişi, reloadCAP() işlevini çağıran "başka bir captcha al" a basarsa, daha büyük resim sınıfı olup olmadığını kontrol eder. eğer yeni görüntü yüklendikten sonra, bu sınıfı ve css öğelerini eklemeye gerek duyarsa, ancak işe yaramayabilirim. Herhangi bir fikir?Yürütme kodu AFTER Recaptcha.reload() tamamlandı

<div id="recaptcha_widget" class="formRow" style="display:none;"> 
    <span class="f_label">Enter Words Below:</span> 
    <input type="text" class="setWidth" id="recaptcha_response_field" name="recaptcha_response_field" /> 

    <div class="cantread"> 
     <strong>Can't read this?</strong><br /> 
     <a href="javascript:reloadCAP()">Get another CAPTCHA</a> 
    </div> 

    <div id="recaptcha_image"></div> <!-- image loaded into this div --> 
     <div class="clear"></div> 
     <span class="smalltext">(click to enlarge)</span> 

     <br clear="all" /> 
    </div> 
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=6LfzMMwSAAAAADV6D04jDE6fKwrJ57dXwOEW-vY3&lang=en"></script> 

cevap

3
$("#recaptcha_widget img").one('load',function(){ 
    $("#recaptcha_widget img").addClass('largecap'); 
    $('#recaptcha_image').css('height', '62px'); 
}); 

Bu yeniden resmin yük olayı sadece dinleyici bir kez koyup folowing kodu çalıştırır olacaktır. Eğer, reloadCAP()

Düzenleme

Tamam diyoruz yeni dinleyici her zaman takmak istemiyorum çünkü

yüzden burada konudur inandığını burada .one() yerine .load() kullandı. Recaptcha.reload()'u aradığınızda, <img /> kaldırılıyor ve yenisiyle değiştiriliyor. Bu yüzden, olayı eklemeyi denediğimizde, görüntü kaldırılırken kaldırılıyor. Ne yapmak gerek

yer recaptcha_image div class largecap ve Burada aslında captcha'yı stil ki özel tema şekildedir gerekenler gibi geliyor

.largecap img { 
    height: whatever; 
    width: whatever; 
} 
+0

hmmm yardım için teşekkürler ... hem de çalıştı. Ve sonra .load ve ne almak için görünüyordu benim için. Ben Recaptcha.reload() önce ve sonra koydu; Ve hiçbir şey işe yaramadı –

+0

Hata ayıklayıcısında bir hata varsa, muhtemelen seçmenlerinizden birinin düzgün çalışmadığından daha fazla sorun yok. HTML’den bazılarını sorguya ekleyebilir misiniz? –

+0

, şimdi benim için bunu yaptı html şimdi –

0

değil ideal çözüm, ancak Recaptcha.reload yukarıdaki addClass kodu koymak() ve sadece bir iki saniye bunu geciktirebilir:

function reloadCAP() { 
    if($("#recaptcha_widget img").hasClass('largecap')) { 
     Recaptcha.reload(); 
     $("#recaptcha_widget img").addClass('largecap'); 
     $('#recaptcha_image').css('height', '62px'); 
    } else { 
     Recaptcha.reload(); 
    } 
} 

burada bu html bu.

Bu yardımcı olur umarım.

+0

Ben bunun için birkaç farklı varyasyonları ile denedim, benim için dışarı çalışmıyor gibi görünmüyordu:/ama –

0

gibi görünecek şekilde css stili değiştirmek/image/vs ihtiyaç tam olarak: Eğer mevcut uygulamaya sopa istiyor yoksa, önce Recaptcha.create aramadan reCAPTCHA en yerleşik (ve belgesiz) geri çağırma fonksiyonları içine kanca https://developers.google.com/recaptcha/docs/customization

(). Recaptcha yok eder ve onu yeniden yükler yeni img her şey oluşturur, bu nedenle elle eklenen stil kaybolur, çünkü

//Called after Recaptcha.reload() is finished loading 
Recaptcha._alias_finish_reload = Recaptcha.finish_reload; 
Recaptcha.finish_reload = function (challenge, b, c) { 
    //Call original function that creates the new img 
    Recaptcha._alias_finish_reload(challenge, b, c); 

    $("#recaptcha_widget img").toggleClass('largecap', true); 
} 

//Called when the initial challenge is received on page load 
Recaptcha._alias_challenge_callback = Recaptcha.challenge_callback; 
Recaptcha.challenge_callback= function() { 
    //Call original function that creates the new img 
    Recaptcha._alias_challenge_callback(); 

    $("#recaptcha_widget img").toggleClass('largecap', true); 
} 

hatta bu sorunu yaşıyorsanız nedenidir.

İlgili konular