我试图将两个字符串转换为相同的格式,如toUpperCase / toLowerCase,以比较两个字符串,无论javaScript中是否区分大小写。以下是我的功能。
function submitForm() {
var usernames=['one','two','Test'];
var cpusername = "test";
var flag = 0;
if (cpusername !== "")
{
for (var k = 0; k < usernames.length; k++)
{
var upperCasecpusername=cpusername.toUpperCase();
var getusername= usernames[k];
var upperCaseusername=getusername.toUpperCase();
if (upperCasecpusername === upperCaseusername)
{
flag=1;
console.log(flag);
//document.getElementById('cpusername').value = '';
$.messager.alert("Message", "Someone already has username"+cpusername+". Try another!!", '');
}
}
}
我收到此错误未捕获的TypeError:无法读取属性&#39; toUpperCase&#39;未定义。我也尝试先转换为String()然后转换为toLowercase()。它也是错误的(toString()未定义)。还建议我,如果有任何其他方式来比较两个字符串,无论区分大小写。谢谢!
答案 0 :(得分:3)
试试这个:
var getusername= ""+usernames[k];
如果这不起作用,那么这可能就是问题所在:
切换
for (var k = 0; k <= usernames.length; k++)
的
for (var k = 0; k <= usernames.length-1; k++)
答案 1 :(得分:1)
试试这个
js代码
jQuery( document ).ready(function() {
var usernames=['one','two','Test'];
var cpusername = "test";
var flag = 0;
if (cpusername !== "")
{
for (var k = 0; k < usernames.length; k++)
{
var upperCasecpusername=cpusername.toLowerCase();
var getusername= usernames[k];
console.log(getusername);
var upperCaseusername=getusername.toLowerCase();
if (upperCasecpusername === upperCaseusername)
{
console.log(upperCasecpusername);
console.log(upperCaseusername);
flag=1;
console.log(flag);
//document.getElementById('cpusername').value = '';
alert( "Someone already has username"+cpusername+". Try another!!", '');
}
}
}
});
您可以查看demo here
答案 2 :(得分:1)
使用函数.toLowerCase()
&amp; .toUpperCase()
很好,但是按照其他方式对字符串不区分大小写进行比较,我建议使用regex
。
尝试这样的事情用于不区分大小写的字符串比较
var str= "TEST";
var result = str.match(/test/i);
if(result){
// Write logic once the match found
}