我有一个包含两个表单的HTML文件,一个用于注册,另一个用于登录。 因此,当我注意到recaptcha不允许每页放置更多的验证码时,我认为我只能为注册表单或登录表单显示验证码(如果所有字段都为空)。所以,我试着从注册表开始,但它不起作用。
HTML:
...
<form>
<input type="text" id="username_reg"></input>
<input type="text" id="email_reg"></input>
<input type="password" id="password_reg"></input>
<input type="password" id="cpassword_reg"></input>
<span id="captcha_reg"></span>
</form>
...
JQuery的:
$(document).ready(
function()
{
$("#username_reg").change(
function()
{
if ($('#username_reg').val()!='' &&
$('#email_reg').val()!='' &&
$('#password_reg').val()!='' &&
$('#cpassword_reg').val()!='')
{
$('#captcha_reg').html('<?php require_once("recaptchalib.php");echo recaptcha_get_html("mypubkey"); ?>'
);
}
}
);
$("#email_reg").change(
//same code as first
);
$("#password_reg").change(
//same code as first
);
$("#cpassword_reg").change(
//same code as first
);
}
);
我知道JQuery代码没有那么优化(从内存资源的角度来看),但我没有任何其他方法来实现它。有人可以帮帮我吗?
答案 0 :(得分:0)
我曾做过类似的事情。你想要做的是有一个隐藏的模板元素,你可以将其转换为reCaptcha小部件,然后当用户切换到相应的部分时,将整个小部件移动到相应的表单div
容器。您可以在此时清除/重置您的字段,或者在显示该部分中的用户之前调用以获取新的验证码质询。这是一个例子:
请参阅append()
操作的jQuery API文档:http://api.jquery.com/append/
HTML:
...
<div id="login_container">
<form>
<input type="text" id="username_reg"></input>
<input type="text" id="email_reg"></input>
<input type="password" id="password_reg"></input>
<input type="password" id="cpassword_reg"></input>
</form></div>
<div id="captcha_template" style="display:none;">
<span id="captcha_reg">
<?php
require_once("recaptchalib.php");
echo recaptcha_get_html("mypubkey");
?>
</span>
</div>
...
JQuery的:
$(document).ready(function() {
// This will move the `#captcha_reg` span and its contents to the `#login_container` div when the DOM is ready.
$('#login_container').append($('#captcha_reg'));
});