我如何编写一个JavaScript函数来检测用户是否在<textarea>
中输入全部大写字母,并禁止提交表单,直到违规者更正了他们的文本?可以理解的是,全部大写的定义是有争议的,但这是我的目标:
有人有什么建议吗?我想象正则表达式是有序的。
答案 0 :(得分:6)
用于检查字符串是否包含大写字母但没有小写字母的Javascript函数:
function allCaps(word) {
var containsUpper = /[A-Z]/.test(word);
var containsLower = /[a-z]/.test(word);
return containsUpper && !containsLower;
}
答案 1 :(得分:2)
也许只是这个:
/[a-z]/i.test(str) && str.toUpperCase () == str
将原始字符串与其自身进行比较,如果相等,则用户仅键入大写字母。
答案 2 :(得分:2)
我建议获得大写字母的比例。这是一种方式:
function getCapsRatio(val) {
// Get the number of uppercase letters
var up = val.match(/[A-Z]/g).length,
// Get the number of letters (no space)
fullLetters = val.match(/[^\s+]/g).length;
// So the ratio of uppercase letters compared to downcase is...
return (up * 100) / fullLetters;
}
所以你要使用这个函数:
var ratio = getCapsRatio(value);
if (ratio > 50) {
// 50% of uppercase letters? this guy is all caps!
}
这应该被研究,但我认为50%是一个很好的比例,认为这个人是全部上限。