Javascript 我想验证用户在编写时的伪代码是否良好

Javascript 我想验证用户在编写时的伪代码是否良好,javascript,Javascript,我正在创建一个小型社区博客,我希望每个新用户都有一个以大写字母开头的昵称,后跟至少两个小写字母,后跟至少一个数字,我想先用javascript然后用php进行检查 对于javascript检查,我希望在字段(事件输入)中键入时发生这种情况,如果昵称与规则不匹配,则输入字段的边框会像大多数网站一样变为红色 为此,我有一个处理着色的函数,它接受两个参数,另一个检查输入的数据是否对应于它包含的正则表达式。后者也需要一个参数。但是我的代码并没有像我希望的那样工作。请引导我 function surlig

我正在创建一个小型社区博客,我希望每个新用户都有一个以大写字母开头的昵称,后跟至少两个小写字母,后跟至少一个数字,我想先用javascript然后用php进行检查

对于javascript检查,我希望在字段(事件输入)中键入时发生这种情况,如果昵称与规则不匹配,则输入字段的边框会像大多数网站一样变为红色


为此,我有一个处理着色的函数,它接受两个参数,另一个检查输入的数据是否对应于它包含的正则表达式。后者也需要一个参数。但是我的代码并没有像我希望的那样工作。请引导我

function surligne(champ, erreur)
{
    if(erreur)
         champ.style.backgroundColor = "red";
    else
         champ.style.backgroundColor = "";
}


function verifPseudo(champ)
{
   var regex= /^[A-Z][a-z]{2,}[0-9]+/;

   if(!regex.test(champ.value))
   {
         surligne(champ, true);
         return false;
   }
   else
   {
         surligne(champ, false);
         return true;
   }
}

var pseudoElt=document.getElementById("pseudo");

pseudoElt.addEventListener("input", verifPseudo(this));

在另一个论坛上,有人告诉我问题来自我在AddEventListener中的函数

我认为问题在于这行代码

pseudoElt.addEventListener("input", verifPseudo(this));

您不能传递这样的参数,因为它正在调用该函数,而不是在事件发生时被调用。您可以在此处查看更多信息以及如何解决此问题:

veripseudo
中传递
将不起作用,因为
不是输入字段,而是整个窗口、页面、文档,不管它叫什么

您可以在我更改后尝试此代码

function surligne(champ, erreur)
{
     if(erreur)
          champ.style.backgroundColor = "red";
     else
         champ.style.backgroundColor = "";
}
function verifPseudo(champ)
{
     var regex= /^[A-Z][a-z]{2,}[0-9]+/;
     if(!regex.test(champ.target.value))        //passed target elements value
     {
          surligne(champ.srcElement, true);     //passed the source element to work on
          return false;
     }
     else
     {
          surligne(champ.srcElement, false);
          return true;
     }
}

var pseudoElt=document.getElementById("pseudo");

pseudoElt.addEventListener("input", e => {    //changed from verifPseudo(this)
     verifPseudo(e)
});
如果您不想要ES6代码,那么改用此事件侦听器

pseudoElt.addEventListener("input", function(e){ 
     verifPseudo(e); 
});

pseudoElt.addEventListener(“输入”,veripseudo)然后在你的
verifseudo
函数中使用
this
而不是
champ
。“我的代码没有像我希望的那样工作”:请详细说明。你好,黑暗的绝对尼特,我已经用“this”替换了我函数verifseudo中的所有“champ”,但没有任何效果。你好,斯科特·亨特;当伪字段没有按照我的要求编写时,我希望伪字段为红色