比较键入的字符串

时间:2012-02-18 18:28:57

标签: javascript

我在使用字符串比较功能时遇到了一些困难。我有一个具有keyup事件的文本框。当按下某个键时,它会调用一个函数来比较文本框中的内容和值列表。我希望能够允许用户在框中键入单词并从列表中删除与已键入的内容不兼容的选项。例如,如果我有这个清单:

   jay
   jason
   jamie
   jamu
   jenny
   sara

并允许用户输入:

   'j' --> sara should be eleminated as a choice
   'ja' --> sara and jenny should be eliminated
   'jam' --> only jamie and jamu should be left
   'jamu' --> should only leave jamu

我的代码似乎只是逐个字母而不是累积的代码。有没有人有更好的方法来检查字符串?

感谢

         function filterByName(e){
        var key = window.event ? e.keyCode : e.which;
    var keychar = String.fromCharCode(key);
    fullString=fullString + keychar
             ..... some other stuff
            //iterate over list
            var ul = document.getElementById("friendUl");           
    var liNodes = ul.getElementsByTagName("li"); 
    var nodeLength = liNodes.length

    for (i=0;i<=nodeLength-1;i++){

            var getFNames=  document.getElementsByName('fNames').item(i)
    var getLNames =  document.getElementsByName('lNames').item(i)
    var fullNames = getFNames + " " + getLNames

    for (j=0;j<=fullString.length-1;j++){
       if(fullString.charAt(j)== fullNames.charAt(j)){
           alert(fullNames)
       }
    }
         }
     }

3 个答案:

答案 0 :(得分:2)

您似乎只想查看给定名称是否以fullString的值开头。

if (fullName.indexOf(fullString) === 0) {
  // It's still valid
} else {
  // It's not valid
}

答案 1 :(得分:0)

从字符串中定义一个函数,如下所示:

String.prototype.startsWith = function(val) {
  return 0 == this.indexOf(val);
};

使用它而不是使用charAt()的for循环。具体来说,替换它:

for (j=0;j<=fullString.length-1;j++){
       if(fullString.charAt(j)== fullNames.charAt(j)){
           alert(fullNames)
       }
    }

有了这个:

if (fullNames.startsWith(fullString))
   alert(fullNames);

答案 2 :(得分:0)

当你做的时候

fullString=fullString + keychar

你应该做的

fullstring = document.getElementById('TextBoxId').value;

这样,您可以考虑退格等...