如何使用 CCaptcha 而不使用模型(规则)和ActiveForms?
只需创建并检查。例如通过AJAX
答案 0 :(得分:0)
即使您正在制作模态ajax表单,我建议使用Yii模型。
您只需要绑定onsubmit方法,使用表单数据进行ajax调用,而不是重新加载整个页面。
我可以在此页面上向您展示Ajax表单的这个示例: http://www.eldeposit.com/agencia/1552/oi-real-estate
使用Yii并具有验证码。
在这种情况下,它不是模态,但它是带有验证码的Ajax表单。
jQuery('#contactar_submit_btn').click(function(){
var submit_label = jQuery('#contactar_submit_btn').attr('value');
jQuery('#contactar').ajaxSubmit(
{'dataType': 'json', 'success': function(data) {
jQuery('#contactar_submit_btn').attr('disabled', false);
jQuery('#contactar_submit_btn').attr('value', submit_label);
var timestamp = Number(new Date());
var csrc = jQuery('#contactarCCaptcha').attr('src');
jQuery('.captcha_image').attr('src',csrc+'?t='+timestamp);
if (data.error.length > 0)
alert(data.error);
else {
jQuery('#contactar_target').html(data.success);
jQuery('#contactar').resetForm();
jQuery('#contactar_target').show();
}
},
'beforeSubmit': function() {
jQuery('#contactar_target').hide();
jQuery('#contactar_submit_btn').attr('value','enviando..');
jQuery('#contactar_submit_btn').attr('disabled', true);
}});
});
使验证码正常工作的“技巧”是使用原始URL中的随机参数对图像进行刷新。这是必需的,因为如果我们保留相同的图像但发送ajax请求,则如果用户点击多次提交,验证码将不匹配。
我经常使用的另一种方法是: 1.在我通过ajax加载的控制器中创建完整的Yii表单,并在带有ID的模态中显示 2.单击提交时,对同一个控制器进行ajax调用,并用ajax响应完全替换模态ID内容
希望它能帮到你!