8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

设置自定义 Bootstrap 无效/有效消息

Ayoub ASSAOUD 2月前

69 0

我使用 react.js/bootstrap 创建了一个登录/注册表单,注册表单中有 4 个输入。一个用于用户名,一个用于电子邮件,还有 2 个用于密码(1 个用于密码,1 个用于确认)...

我使用 react.js/bootstrap 创建了一个登录/注册表单,注册表单中有 4 个输入。一个用于用户名,一个用于电子邮件,还有两个用于密码(1 个用于密码,1 个用于确认),如果两个密码不匹配,我想显示一条消息,例如密码不匹配。

在检查了 2 个密码输入后,我尝试添加无效反馈 boostrap 类,但它没有按预期工作这是我正在使用的代码:

   function handleSubmit(e) {
    e.preventDefault();
    const form = e.target;
    passwordChecker();


    if (form.checkValidity()) {
        handleLoginClick();
        reset();
        console.log("Form submitted successfully");
    } else {
        form.classList.add('was-validated');
    }
  }
function passwordChecker(){
    const confirmPasswordField = document.querySelector("#invalidpassword1");
    if (isRegistering && password !== checkPassword) {
        form.classList.add('was-validated');
        confirmPasswordField.classList.add("invalid-feedback"); 
        console.log("passwords dont match")
    } else {
        confirmPasswordField.classList.remove("invalid-feedback");
        console.log("passwords  match")
    }
  }


<div className="form-floating mb-3">
                    <input 
                      type="password" 
                      className="form-control" 
                      id="registerPassword" 
                      placeholder="Enter your password"
                      value={password}
                      onChange={(e) => setPassword(e.target.value)}
                      required 
                    />
                    <label htmlFor="registerPassword">Password</label>
                    <div className='invalid-feedback' id='invalidpassword2'>Please fill out this field</div>
                 
  <div className="form-floating mb-3">
                    <input 
                      type="password" 
                      className="form-control" 
                      id="confirmPassword" 
                      placeholder="Confirm your password"
                      value={checkPassword}
                      onChange={(e) => setCheckPassword(e.target.value)}
                      required
                    />
                    <label htmlFor="confirmPassword">Confirm Password</label>
                    <div id='invalidpassword1'>Passwords do not match</div> 
                  </div>

我尝试过的新代码

<div id='invalidpassword1' className='invalid-feedback'>{checkPassword==='' ? 'Please fill out this field' : 'Passwords do not much'}</div>

现在弹出了正确的消息,但公式仍然不起作用,当密码不匹配时,它会显示正确的

帖子版权声明 1、本帖标题:设置自定义 Bootstrap 无效/有效消息
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Ayoub ASSAOUD在本站《reactjs》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 根据引导文档,无效/有效的自定义反馈消息必须包含在 <form> 属性 novalidate

    https://getbootstrap.com/docs/5.0/forms/validation/#custom-styles

  • 是的,我已经添加了,但我没有发布,这是我的错

  • 是的,我已经更新了我最初发送的代码,我正在检查这两个密码是否相同,并且正如预期的那样,我收到了消息“密码不匹配”,但输入的行为就像它正确一样,它变成了绿色等等。所以我想没有添加类或类似的东西,因为我在控制台中没有收到任何警告

  • 我不相信表单会默认检查密码是否匹配,目前,只有表单验证失败时才会调用 passwordChecker()。因此,即使密码不匹配,form.checkValidity() 仍会返回 true。

  • 是的,你是对的,我在 handleSubmit 开始时调用了 passwordChecker,它现在应该可以工作了,但是,当我在确认密码中输入 1 个字符时,它立即生效,而不是我希望它等于第一个密码

  • 您需要使用 setCustomValidity()

    因此,获取输入字段并将其有效性设置为某些值(例如,一个空格以避免浏览器显示消息,而仅显示 BS 反馈):

    if (isRegistering && password !== checkPassword) {
        form.classList.add('was-validated');
        confirmPasswordField.classList.add("invalid-feedback"); 
        console.log("passwords dont match")
    
        const input = document.querySelector('#confirmPassword');
        input.setCustomValidity(" ");                
        input.reportValidity();
    
返回
作者最近主题: