如果.else逻辑,JavaScript错误



我有个问题。代码有问题,因为即使像abc56这样的输入,它仍然会发出"警告";输入您的姓名;。或者当输入是abc时,应该显示"abc";完美"而不是";输入您的姓名;。输入只允许字符而不允许数字,我认为regex是正确的,唯一错误的是逻辑。你们能帮我吗?

var check=document.forms["check"]["name"].value;
var reg=/^[a-zA-Z]+$/;
function ipt(){
if(check !== ""){
if(check.match(reg)===false){
alert("Only enter character please");
}
else{
alert("Perfect");
}

}
else{
alert("Enter your name");
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Check</title>
<script src="./check.js" defer></script>
</head>
<body>
<form name="check" onsubmit="ipt()">
<label for="name">Name</label>
<input type="text" id="name" name="name">
<button type="submit">Submit</button>
</form>
</body>
</html>

您可以在页面加载时获得document.forms[quot;check"][quot;name"]的值
不是提交事件的值

如果您的regex用法错误,请使用RegExp.protype.test((
它返回布尔值(true或false(

进行

const name_elm = document.forms.check.name
,   reg      = /^[a-zA-Z]+$/
;
function ipt() {
if (!!name_elm.value)   // or if (name_elm.value !== '')
{
if (reg.test(name_elm.value))
{ alert('Perfect') } 
else 
{ alert('Only enter character please') }
} 
else {
alert('Enter your name');
} } 

您可以使用else-if.清理if语句

当您检查表单中的值时,当您需要查看当前值时,请使用value

var check = document.forms["check"]["name"];
var reg = /^[a-zA-Z]+$/;
function ipt(){
// check if its empty
if (check.value === "") {
alert("Enter your name");
// check if it matches the pattern
} else if (!check.value.match(reg)) {
alert("Only enter character please");
} else {
// Success! 
alert("Perfect");
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Check</title>
<script src="./check.js" defer></script>
</head>
<body>
<form name="check" onSubmit="return ipt()">
<label for="name">Name</label>
<input type="text" id="name" name="name">
<button type="submit">Submit</button>
</form>
</body>
</html>

最新更新