2016-02-26 145 views
1

我试图将两个字符串转换为相同的格式,比如toUpperCase/toLowerCase来比较两个字符串,而不管在javaScript中是否区分大小写。以下是我的功能。先不能读取属性“toUpperCase”未定义的。我也试图转换的toString()来toLowercase()。它也犯了错误(的toString()未定义):Uncaught TypeError:无法读取未定义的属性'toUpperCase'

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!!", '');      


        } 
       } 
       } 

正在此错误遗漏的类型错误。另外建议我是否有其他方法来比较两个字符串,而不管区分大小写。谢谢!

+3

如果条件'k <= usernames.length;'将使它通过数组边界。数组的索引是0,所以数组的最后一个索引将是Array'length-1' –

+0

其中代码中的'toUpperCase'是? – gurvinder372

+1

可能重复[Javascript数组未定义for循环](http://stackoverflow.com/questions/6571451/javascript-array-undefined-in-for-loop) –

回答

3

试试这个:

var getusername= ""+usernames[k]; 

如果还是不行,那么这可能是这个问题:

开关

for (var k = 0; k <= usernames.length; k++) 

for (var k = 0; k <= usernames.length-1; k++) 
+0

谢谢你。它确实有效。但为什么toUpperCase不适用于数组。任何想法? –

+0

甚至可以为(var k = 0; k Andy

+0

你尝试了我的第一个建议吗?这应该使'.toUpperCase'工作。如果不是,那么我真的不知道错误可能是什么。 –

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

1

使用功能.toLowerCase() & .toUpperCase()都很好,但要求其他方式的字符串区分大小写的比较,我会建议使用regex。 尝试类似这样的不区分大小写的字符串比较

var str= "TEST"; 
var result = str.match(/test/i); 
if(result){ 
// Write logic once the match found 
} 
相关问题