我在使用字符串比较功能时遇到了一些困难。我有一个具有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)
}
}
}
}
答案 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;
这样,您可以考虑退格等...