2013-10-02 54 views
1

我在一個頁面中使用兩個recaptcha,這個頁面有兩種形式供不同的用戶使用。recaptcha.destroy()在自定義主題中不起作用

我使用自定義主題,使用AJAX API創建的驗證碼爲:

function showRecaptcha(element) { 
    Recaptcha.create(
     'publice_key', 
     element, { 
      theme: 'custom', 
      callback: Recaptcha.focus_response_field 
     }); 
} 

我用它在兩種模式:

$("#to-teach").click(function() { 
     $("#sign-up-welcome").hide(); 
     teachForm(); 
     showRecaptcha('teachcaptcha'); 
     return false; 
    }); 

,另一個用於

$("#to-student").click(function() { 
      $("#sign-up-welcome").hide(); 
      studentForm(); 
      showRecaptcha('studentcaptcha'); 
      return false; 
     }); 

teachForm()是:

function teachForm() { 
     Recaptcha.destroy('studentcaptcha'); 
     signup.show(); 
     signupTitle.text("Sign Up as a Teacher"); 
    } 

和類似摧毀作爲Recaptcha.destroy('teachcaptcha');

和HTML爲定製驗證碼事件是:

<div id="teachcaptcha"> 
       <div id="recaptcha_image"></div> 
       <div class="captcha-input-box"> 
        <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" class="input-recaptcha" /> 
        <a class="fontawesome-refresh" href="javascript:Recaptcha.reload()"></a> 
        <a class="fontawesome-headphones recaptcha_only_if_image" href="javascript:Recaptcha.switch_type('audio')"></a> 
        <a class="fontawesome-picture recaptcha_only_if_audio" href="javascript:Recaptcha.switch_type('image')"></a> 
        <a class="fontawesome-question" href="javascript:Recaptcha.showhelp()"></a> 
       </div> 
      </div> 

,同樣爲studentcaptcha

的問題是,如果我使用white主題而不是custom並且不要放任何自定義html<div id="studentcaptcha" or "teachcaptcha">...</div>破壞()最好,但它根本不工作時,我使用custom主題,並把我自己的HTML div

有什麼建議嗎?

回答

0

我想出了爲什麼Recaptcha.destroy()不會破壞舊的captcha ...這是因爲destroy()是專爲非自定義captcha主題。

在其確定指標,它具有:

Recaptcha.widget&&("custom"!=Recaptcha.theme?Recaptcha.widget.innerHTML="":Recaptcha.widget.style.display="none",Recaptcha.widget=null),所以它不會完全當使用custom主題刪除驗證碼。

解決方法是編寫自定義銷燬方法,使用jQuery(或JavaScript)手動刪除驗證碼的html小部件。