JavaScript姓名首字母大写验证问题:如何实现正确检测?
解决姓名首字母大写验证的问题
嘿,我一眼就瞅出你代码里的关键问题啦!你用document.getElementById('fName')拿到的inputtext是DOM元素对象,不是输入框里的实际文本内容,所以直接对它调用charAt()或者正则匹配肯定不管用——得先获取它的value属性才行!
先说说你之前尝试的代码为啥无效:
if(inputtext.match(upperCase)):match()是字符串专属方法,DOM元素没有这个方法,得改成inputtext.value.match(...)才行if(inputtext(0).value === ...):这是语法错误,DOM元素不是函数,不能用inputtext(0)这种方式调用if(inputtext.charAt(0) === ...):同样,charAt()是字符串方法,必须先取inputtext.value再调用if(upperCase.test(inputtext)):test()方法需要传入字符串参数,你传的是DOM元素对象,自然不会生效
修正后的可行代码方案
这里给你两种实用的写法:
方案1:用字符串方法判断
var inputtext = document.getElementById('fName'); // 先拿到输入框的文本内容,同时去掉首尾空格避免空输入干扰 var inputValue = inputtext.value.trim(); if (inputValue && inputValue.charAt(0) === inputValue.charAt(0).toUpperCase()) { return true; } else { console.log(inputValue + " : first letter is not uppercase."); return false; }
方案2:用你定义的正则表达式判断
其实你写的正则/^[A-Z]/是完全正确的,只要把它用到inputtext.value上就行:
var inputtext = document.getElementById('fName'); var upperCase = /^[A-Z]/; var inputValue = inputtext.value.trim(); if (upperCase.test(inputValue)) { return true; } else { console.log(inputValue + " : first letter is not uppercase."); return false; }
额外小提醒
加上trim()处理很有必要,不然用户输入空格开头的内容时,判断逻辑会直接出错哦!
内容的提问来源于stack exchange,提问作者Roy
相关产品推荐
相关产品推荐

