javascript - 如何在用户键入时更改输入的类?

标签 javascript jquery css input passwords

我正在尝试在用户键入时更改密码确认输入的颜色。如果匹配,边框变为绿色,如果不匹配,则变为红色。

这是 JQuery:

var createPass = $("#createPass").val();
var confirmPass = $("#confirmPass").val();

$("#confirmPass").keydown(function() {

   if(confirmPass == createPass && confirmPass != "") {
      confirmPass.addClass("inputCorrect")
   } else {
      confirmPass.addClass("inputIncorect");
   }
});

html:

<label for="passWord">Create Password</label>
<input type="password" id="createPass" name="passWord" class="inputBox"  placeholder="Minimum 8 characters" required><br>

<label>Confirm Password</label>
<input type="password" id="confirmPass" class="inputBox" required>

还有 CSS:

input.passCorrect {
   border: 1px solid #00cc00;
}

input.passIncorrect {
   border: 1px solid #ff0000;
}

我也首先尝试了以下 JQuery,但对于这项工作来说似乎有点长:

$("input[id=confirmPass").keyup(function() {

   if ($("input[id=confirmPass]").val() == $("input[id=createPass]").val()) {

       ($("input[id=confirmPass]").removeClass("passIncorrect"));
       ($("input[id=confirmPass]").addClass("passCorrect"));

   }

   if ($("input[id=confirmPass]").val() != $("input[id=createPass]").val() && ($("input[id=confirmPass]") != "")) {

       ($("input[id=confirmPass]").removeClass("passCorrect"));
       ($("input[id=confirmPass]").addClass("passIncorrect"));

   }

});

我试过使用.keyup(), .keydown(), .keypress(), .change( ),并重命名了几乎每个类、id 和变量,但我没有成功!它在一个单独的 .js 文件中,我已经尝试过使用和不使用 $(document).ready() 并且它不起作用。我还尝试使用 .css() 而不是 .addClass.removeClass

如有任何帮助,我们将不胜感激!

最佳答案

这是使其工作的固定 Javascript:

var createPass = $("#createPass");
var confirmPass = $("#confirmPass");

confirmPass.keydown(function() {
    // Remove both classes
   confirmPass.removeClass("passCorrect passIncorrect");

   // Add the appropriate class
   if (confirmPass.val() == createPass.val() && confirmPass.val() != "") {
      confirmPass.addClass("passCorrect");
   } else {
      confirmPass.addClass("passIncorrect");
   }
});

以下是之前无法正常工作的部分:

  • 在执行代码 confirmPass.addClass("inputCorrect") 时,您将一个类添加到一个整数值。
  • 在您的 javascript 中,您添加了“inputCorrect”和“inputIncorrect”类,但在您的 CSS 中,您将这些类称为“passCorrect”和“passIncorrect”。
  • 你需要在每次用户按键时获取createPass和confirmPass的值,否则你一开始声明的两个变量将始终包含两个输入的初始值。
  • 每次用户按下一个键时,您都需要删除输入的类,否则这两个类都将应用于输入。

关于javascript - 如何在用户键入时更改输入的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45548121/

相关文章:

javascript - 在屏幕中央显示 jQuery 的日期选择器

javascript - 如何通过 PHP 更改 HTML 类?

html - 修复水平滚动

css - Bootstrap - 如何创建带有可滚动列的全屏布局?

javascript - jquery 删除基于之前的内容

jquery - 单击时增加整个元素的字体大小

javascript - 当用户单击 anchor 标记时防止默认事件(浏览器导航)

html - 没有 IE 和 Firefox 背景

javascript - 与 JavaScript 生成的 HTML 交互

javascript - 当缩小小于其最小宽度时,如何使 4 个 div 动态占用 25/50/100%?