Javascript 为什么此代码未生成任何警报消息

Javascript 为什么此代码未生成任何警报消息,javascript,html,Javascript,Html,在这里,我写了一些用html和javascript对表单进行验证的代码 <!DOCTYPE html> <html> <body> <form name="registration"> <input style="font-size:16px;" type="text" name="Name" placeholder="Full Name" onchange="checkName()" required /> </form>

在这里,我写了一些用html和javascript对表单进行验证的代码

<!DOCTYPE html>
<html>
<body>
<form name="registration">
<input style="font-size:16px;" type="text" name="Name" placeholder="Full Name" onchange="checkName()" required />
</form>
<script>
function checkName()  
{   
    var uname=document.registration.Name.value;
    var letters = /^[A-Za-z]+$/;  
    if(uname.value.match(letters))  
    {   
                alert('fg');
    }  
    else  
    {  
        alert('Username must have alphabet characters only');  
        //uname.focus();  
    }  
}
</script>

</body>
</html>

函数checkName()
{   
var uname=document.registration.Name.value;
变量字母=/^[A-Za-z]+$/;
if(未指定值匹配(字母))
{   
警报(“fg”);
}  
其他的
{  
警报('用户名必须只有字母字符');
//uname.focus();
}  
}

请描述它不工作的原因?

问题是您试图获取value属性两次。例如:

var uname=document.registration.Name.value;

if(uname.value.match(letters))
uname变量已包含该值,因此无需再次获取该值。将您的if语句更改为此

if (uname.match(letters))

它工作得很好:)

使用
onchange
input type=“text”
是非常少见的
onchange
事件通常仅在您离开(
blur
)控件后发生。
onchange
主要与
select
元素的更改相关。 对于您的情况,最好同时使用
keydown、keydup
keypress
事件

HTML

<input style="font-size:16px;" type="text" name="Name" placeholder="Full Name" onkeyup="checkName()" required />


您是否检查了控制台的错误?函数之后似乎有一个杂散的
}
。我做了一些更改,请重新检查它以什么方式“不起作用”?有什么事发生吗?是否有错误?它没有显示任何警报框右侧。您检查过开发者控制台中的错误了吗?这并不能回答他的问题。它不起作用。@Manodesra他的问题没有生成警报消息这个问题在他编辑并删除if块外的警报之前得到了回答。我猜您错过了这一部分&onchange不是我在回答中提到的文本的正确事件处理程序。谢谢,但它不起作用。问题是,他试图在已经获得value属性之后再获得value属性。你上面的小提琴也会犯同样的错误。鉴于此,您可能希望修改您的答案。不想表现得粗鲁。只是想帮忙:)