reCAPTCHA 成功时从元素中删除 css 类 - Nextjs

Posted

技术标签:

【中文标题】reCAPTCHA 成功时从元素中删除 css 类 - Nextjs【英文标题】:Remove css class from element when reCAPTCHA is successful - Nextjs 【发布时间】:2021-11-30 15:11:30 【问题描述】:

当有人验证他们对表单的输入时,我正在尝试从输入按钮元素中删除 css 类 btn-disabled

我目前创建了一个名为 enableForm 的函数,用于在验证 reCAPTCHA 时删除 CSS 类 btn-disabled

目前我的 CSS 类没有被删除,这不允许表单提交。我的 console.log yes 正在出现,因此正在调用该函数,但我无法删除 CSS 类。此方法以前使用常规 javascript 工作,现在我尝试在 nextjs 上做同样的事情。如何在 reCAPTCHA 成功后删除我的 CSS 类?

这是我的代码 sn-p:

import ReCAPTCHA from "react-google-recaptcha";

const TopForm = () => 

const enableForm = function () 
        console.log('yes')
        document.getElementById("btnSubmit").classList.remove = "btn-disabled";
    ;

return (
 <div> 
 <input
                    id="first_name"
                    maxlength="40"
                    name="first_name"
                    size="20"
                    type="text"
                    placeholder="First Name*"
                    className="field"
                />
                <br />

                <input
                    id="last_name"
                    maxlength="80"
                    name="last_name"
                    size="20"
                    type="text"
                    placeholder="Last Name*"
                    className="field"
                />
          <ReCAPTCHA 
                sitekey="XXXXXX"
                onChange=enableForm
                />
<input
                    id="btnSubmit"
                    type="submit"
                    name="submit"
                    className="btn-disabled btn-alternative width-inherit margin-left-0 "
                />

</div>
)


btn-disabled 的 CSS 属性为:

.btn-disabled cursor:not-allowed;opacity:0.5;text-decoration:none;pointer-events: none;

【问题讨论】:

【参考方案1】:

您可以根据您的状态值更好地管理类

        import ReCAPTCHA from "react-google-recaptcha";

const TopForm = () => 

const [isActive, setIsActive] = useState(false);


const enableForm = function () 
        console.log('yes')
        setIsActive(true)
    ;

return (
 <div> 
 <input
                    id="first_name"
                    maxlength="40"
                    name="first_name"
                    size="20"
                    type="text"
                    placeholder="First Name*"
                    className="field"
                />
                <br />

                <input
                    id="last_name"
                    maxlength="80"
                    name="last_name"
                    size="20"
                    type="text"
                    placeholder="Last Name*"
                    className="field"
                />
          <ReCAPTCHA 
                sitekey="XXXXXX"
                onChange=enableForm
                />
<input
                    id="btnSubmit"
                    type="submit"
                    name="submit"
                    className=`constant1 $isActive ? "active" : "" btn-alternative width-inherit margin-left-0`
                />

</div>
)

【讨论】:

【参考方案2】:

在您的函数中,您不小心犯了分配函数而不是调用它的错误。

应该是这样的:

const enableForm = function () 
        console.log('yes')
        document.getElementById("btnSubmit").classList.remove("btn-disabled");
    ;

它现在应该可以工作了。

【讨论】:

您能详细说明一下吗?这解决了问题,但您的代码看起来与我眼中的完全一样 我看它不应该是 = "btn-disabled"; 请注意这是一种反模式反应

以上是关于reCAPTCHA 成功时从元素中删除 css 类 - Nextjs的主要内容,如果未能解决你的问题,请参考以下文章

迭代时从 HashSet 中删除元素 [重复]

单击元素时从 mongodb 中删除特定的数组元素

迭代时从集合中删除元素

在枚举该数组时从数组中删除元素

切换方向时从堆栈视图中删除的元素

Python:如何在迭代列表时从列表中删除元素而不跳过未来的迭代