2016-06-24 45 views
15

我有兩個單選按鈕。當我點擊其中一個來更改表單域時,驗證碼版本1不再顯示。單擊單選按鈕後,Google Recaptcha未顯示

所以,我不得不點擊刷新按鈕來生成一個新的驗證碼圖像。

<input type="radio" name="data[Form][sv]" id="FormV1" value="1" /> V1 
<input type="radio" name="data[Form][sv]" id="FormV2" value="2" checked="checked" /> V2 

jQuery代碼是:

$(document).ready(function() { 
    $("#FormV1").bind("change", function (event) { 
     $.ajax({async:true, 
     beforeSend:function (XMLHttpRequest) { 
      $('#loading').show(); 
     }, 
     complete:function (XMLHttpRequest, textStatus) {$('#loading').hide()}, 
     data:$("#FormularioSituacaoVeiculo1").closest("form").serialize(), 
     dataType:"html", 
     evalScripts:true, 

success:function (data, textStatus) { 
    $("#search").html(data);}, 
    type:"post", 
    url:"\/mysite\/theurl\/"}); 
    return false; 
}); 

$("#FormV2").bind("change", function (event) { 
    $.ajax({async:true, 
    beforeSend:function (XMLHttpRequest) { 
    $('#loading').show(); 
}, 
    complete:function (XMLHttpRequest, textStatus) { 
     $('#loading').hide() 
    }, 
    data:$("#FormV2").closest("form").serialize(), 
    dataType:"html", evalScripts:true, success:function (data, textStatus) { 
     $("#search").html(data); 
    }, 
    type:"post", 
    url:"\/mysite\/url\/"}); 
    return false; 
}); 

function showRecaptcha(element) { 
    Recaptcha.create('hjfsdjklsdjklfsdjklfsdjklfjksdl', element, { 
     lang : 'en-gb', 
     theme : 'custom', 
     custom_theme_widget: 'recaptcha_widget', 
     callback: Recaptcha.focus_response_field 
    } 
); 
} 

showRecaptcha('recaptcha_div'); 

如何可以切換表單字段(V1至V 2),並且不必點擊刷新按鈕自動生成驗證碼?

今天當我單擊單選按鈕時,不會生成驗證碼。所以我必須點擊刷新按鈕重新生成驗證碼圖片。

+0

可以創建的jsfiddle檢查嗎?謝謝。 –

+0

你的控制檯有任何錯誤嗎?你有沒有調試過它? – krillgar

+0

你也許應該發佈你正在使用的HTML,或者只需將其添加到小提琴每@GerardCuadras –

回答

11

請檢查該工作示例(我已經盡了最大的努力使這個例子儘可能接近您的情況):

$('input[name="data[Form][sv]"]').change(function(e) { 
 
    $.ajax({ 
 
    async: true, 
 
    beforeSend: function(XMLHttpRequest) { 
 
     $('#loading').show(); 
 
    }, 
 
    complete: function(XMLHttpRequest, textStatus) { 
 
     $('#loading').hide() 
 
    }, 
 
    data: $(this).closest("form").serialize(), 
 
    evalScripts: true, 
 
    success: function(data, textStatus) { 
 
     $("#search").html(data); 
 
     Recaptcha.reload(); 
 
    }, 
 
    dataType: "html", 
 
    type: "POST", 
 
    url: "https://httpbin.org/post" 
 
    }); 
 
    return false; 
 
}); 
 

 
function showRecaptcha(element) { 
 
    Recaptcha.create('6Ld3TPkSAAAAAPckREYZuVQ6GtjMQsD-Q5CkzNxj', element, { 
 
    lang: 'pt-BR', 
 
    theme: 'white', 
 
    custom_theme_widget: 'recaptcha_widget', 
 
    //callback: Recaptcha.focus_response_field 
 
    }); 
 
} 
 

 
$(function() { 
 
    showRecaptcha('recaptcha'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<script src="https://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script> 
 
<div id="recaptcha"></div> 
 

 
<h4>Radio Inputs: </h4> 
 
<form> 
 
    <input type="radio" name="data[Form][sv]" id="FormV1" value="1" />V1 
 
    <input type="radio" name="data[Form][sv]" id="FormV2" value="2" checked="checked" />V2 
 
</form> 
 
<h4>Ajax Post Result <span style="display:none" id="loading">Loading...</span>: </h4> 
 
<div id="search"> 
 

 
</div>

1

刷新代碼是你在找什麼?

爲V1:

Recaptcha.reload(); 

爲V2:

grecaptcha.reset(); 
+0

我發現,即使點擊默認重新加載驗證碼按鈕,這就是調用Recaptcha。reload(),圖像沒有出現,我開始考慮從零開始設置Recaptcha,而不是尋找bug。 –

+0

我嘗試調用Recaptcha.reload();成功但沒有按照預期實現圖像。 –

+0

我還注意到另外一件事,就是點擊幾次,交替出現驗證碼確實出現的兩個選項!爲兩個diferente選項 –