Javascript 如何使函数在每次输入时生效?

Javascript 如何使函数在每次输入时生效?,javascript,jquery,if-statement,frontend,Javascript,Jquery,If Statement,Frontend,我试图比较两个输入框的值,然后在两个框的值不相等时更改框的边框。我遇到的问题是在if语句中,我比较输入框的两个值,它永远不会比较相等,除非在开始时它们都是空的,即使它们是空的。我通过自身运行函数,我在函数上运行setTimeout,所以它每500毫秒检查一次。任何帮助都将不胜感激,我很可能会在早上醒来时看到答案 var passContext = $('#pass').val(); var pass2Context = $('#pass2').val(); function che

我试图比较两个输入框的值,然后在两个框的值不相等时更改框的边框。我遇到的问题是在if语句中,我比较输入框的两个值,它永远不会比较相等,除非在开始时它们都是空的,即使它们是空的。我通过自身运行函数,我在函数上运行setTimeout,所以它每500毫秒检查一次。任何帮助都将不胜感激,我很可能会在早上醒来时看到答案

var passContext = $('#pass').val();
var pass2Context = $('#pass2').val();

      function checkMatch() {
    if (passContext == pass2Context) {
      if($('#passCont').css({borderWidth: 1})) {
        $('#passCont').animate({
        borderWidth: 0
      }, 400)
      }
      //Add button animation
    } else {
      $('#passCont').css({
        border: '0 solid red'
      }).animate({
        borderWidth: 1
      }, 400)
      setTimeout(checkMatch, 2000);
    }
  }

  checkMatch();

完整代码:

我知道我必须改变什么。我的变量passContext和pass2Context必须在我的checkMatch函数中。

这就是您所期望的。在我的代码中获取逻辑。观看现场演示


.stl{
边框:3倍纯色橙色;
}
第一:
第二: $(文档).ready(函数(){ $(“.myinput”).on('change keyup keydown',function()){ var theid=$(this.attr('id'); 如果(theid==“myone”) { //警报(theid); var valone=$(“#myone”).val(); var valtwo=$(“#mytwo”).val(); if(valone!=valtwo) { $(#mytwo”).addClass(“stl”); $(“#myone”).removeClass(“stl”); } 其他的 { $(“#myone”).removeClass(“stl”); $(“#mytwo”).removeClass(“stl”); } } 其他的 { //警报(theid); var valone=$(“#myone”).val(); var valtwo=$(“#mytwo”).val(); if(valtwo!=valone) { //警惕(“不平等”); $(“#myone”).addClass(“stl”); $(“#mytwo”).removeClass(“stl”); } 其他的 { $(“#myone”).removeClass(“stl”); $(“#mytwo”).removeClass(“stl”); } } }); });
您可以使用输入事件或键控事件

没有jquery:

var passContext = document.getElementById('pass'),
    pass2Context = document.getElementById('pass2');

function checkMatch() {
  ...  
}

passContext.addEventListener('input', checkMatch, false);
pass2Context.addEventListener('input', checkMatch, false);
passContext.addEventListener('keyup', checkMatch, false);
pass2Context.addEventListener('keyup', checkMatch, false);

// The third param on the addEventListener function is to disable the bubbling
使用JQuery:

function checkMatch() {
  ...
}
$('#pass, #pass2').on('keyup input', checkMatch);

但在您提供的小提琴中,您使用的是
change keyup-paste
events。。您的问题具有误导性和迷惑性…在
两个输入上绑定
按键
按键
功能未定义,因此在附加的事件中添加
输入
事件…我已修复它。我将两个变量passContext和pass2Context放在myCheck函数中,它现在可以工作了。谢谢你们的支持。