好的所以我们有一个带有名字的数组,以及一个用户输入字符串的输入字段,我们想给他起名字建议。名字Alex,Anna属于数组,例如当用户输入" a&#34时;我们想提出建议" Alex"和#34; Anna"。这是我的代码:
<!DOCTYPE html>
<html>
<body>
<p class="thick"> Name*: </p> <input type="text" id="fullname" onkeyup="myFunction();">
<p id="test"></p>
<script>
var namesArray= ["Alex","Anna","Eva","George","Jason","John","Lisa","Mary","Michael","Nick","Vicky"];
function myFunction() {
var text = document.getElementById('fullname').value;
var patt1 = new RegExp('^' + text, "i");
var result = [];
for (i = 0; i < namesArray.length; i++) {
if (patt1.test(namesArray[i]))
result.push(namesArray[i]);
}
document.getElementById("test").innerHTML = result.join('<br />');
}
</script>
</body>
</html>
它工作正常期待一件事。当第一次加载时,如果我进入SPACE然后按DELETE,整个数组显示为名称建议..我不想要那个。我想要一个建议只出现时输入字段是非空的。当用户删除他到目前为止输入的内容时,我不想提出任何建议。我该怎么做?
答案 0 :(得分:1)
虽然可以进行其他改进,但解决您的直接问题包括在建议结果之前检查字符串的长度。如果输入为空,请不要提供建议。
您可以使用简单的str.length > 0
支票,例如:
var namesArray = ["Alex", "Anna", "Eva", "George", "Jason", "John", "Lisa", "Mary", "Michael", "Nick", "Vicky"];
function myFunction() {
var text = document.getElementById('fullname').value;
var patt1 = new RegExp('^' + text, "i");
var result = [];
// Check length
if (text.length > 0) {
for (i = 0; i < namesArray.length; i++) {
if (patt1.test(namesArray[i]))
result.push(namesArray[i]);
}
}
document.getElementById("test").innerHTML = result.join('<br />');
}
<!DOCTYPE html>
<html>
<body>
<p class="thick">Name*:</p>
<input type="text" id="fullname" onkeyup="myFunction();">
<p id="test"></p>
</body>
</html>
答案 1 :(得分:0)
尝试使用空值初始化数组,以便在键入空格并删除时,它知道不搜索任何内容。之后可能会重新初始化数组。
由于您使用onkeyup
,在点击空格后,它会搜索数组中与空格匹配的所有内容,在这种情况下似乎是数组中的所有内容。