javascript - 我想验证用户的伪在他写作时是否良好
问题描述
我正在创建一个小型社区博客,我希望每个新用户都有一个以大写字母开头的昵称,后跟至少两个小写字母,后跟至少一个数字,我想先用 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));
在另一个论坛上,有人告诉我问题来自我在 addEventListenener 中的函数
解决方案
传入将不起作用,因为this
不是输入字段,而是整个窗口、页面、文档,无论它被称为什么!verifPseudo
this
你可以试试这个代码,在我改变之后
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);
});
推荐阅读
- sqlite - 如何在sqlite上格式化日期?
- php - 我尝试将删除按钮标签替换为锚标签,但没有成功
- reactjs - ReactJS 挂钩 useContext 问题
- javascript - 加载 javascript 时文本生涩
- javascript - 完整日历中同一日期的多个事件问题
- javascript - 将 Axios 响应作为 prop 发送到组件
- python-2.7 - 我正在尝试为我的 GUI 应用程序设置固定框架。窗口不应改变其大小
- spring-mvc - 在两个不同的 @RestController 类中有两个完全相同的 @ExceptionHandler 是不好的做法吗?
- x86-16 - 实模式下的有效寻址 - 访问数组
- kubernetes - 在我的情况下,为什么 pod 状态会以 crashloopbackoff 的形式出现?