带有recaptcha序列化问题的Jquery表单?

时间:2011-02-28 04:21:58

标签: javascript jquery jquery-selectors recaptcha

尝试使用表单中的recaptcha序列化表单。

以下是我对表单进行序列化的方法:

var serializedform = $('form.af').serialize();

这是我的表单示例:

<form class = 'af'>
    <input name='name' id = 'name'>
    <input name='lastname' id = 'lastname'>
        <div id = 'recaptchadiv'>
            <input name='recaptcha_response_field' id = 'recaptcha_response_field'>
            <input name='recaptcha_challenge_field' id = 'recaptcha_challenge_field'>
            <noscript>
                <input name='recaptcha_response_field' id = 'recaptcha_response_field'>
                <input name='recaptcha_challenge_field' id = 'recaptcha_challenge_field'>
            </noscript>
        </div>
    <button name = 'submit'>
</form>

问题来自recaptcha自动注入的recaptcha noscript块。 该块包含recaptcha_response_field和recaptcha_challenge_field的副本。

所以 - 当我序列化这个表单时 - 来自noscript块输入的值会覆盖真实的recaptcha_response_field和recaptcha_challenge_field值。

有没有办法在跳过noscript块时使用jquery序列化表单?

感谢:)

2 个答案:

答案 0 :(得分:4)

在表单序列化之前,你可以使用jQuery remove <noscript>标签 - 显然,这一点并不是必需的。像这样:

var $form = $('form.af');
$form.find('noscript').remove();
var serializedform = $form.serialize();

答案 1 :(得分:1)

noscript标签的内容首先不应该出现在DOM中,因此不需要删除它们。请参阅DEMO

您确定noscript标签的内容是否已序列化?