javascript - 使用用户输入提供名称建议

标签 javascript html

好的,我们有一个包含名称的数组,以及一个输入字段,用户在其中输入字符串,我们想给他提供名称建议。名称 Alex,Anna 属于该数组,例如,当用户输入“a”时,我们想要建议“Alex”和“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,整个数组将显示为名称建议。我不希望这样。我希望仅当输入字段非空。当用户删除到目前为止输入的内容时,我不希望出现任何建议。我该怎么做?

最佳答案

虽然还可以进行其他改进,但解决当前问题的方法包括在建议结果之前检查字符串的长度。如果输入为空,则不提供建议。

您可以使用简单的 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>

关于javascript - 使用用户输入提供名称建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37397179/

相关文章:

javascript - 在 IE6 运行时添加 CSS 规则 - 对象不支持此属性或方法

javascript - 使用 Javascript 和/或 jQuery 计算选择选项的值

javascript - jQuery - 如何同时应用 .animate() 和 .show ('slide' )?

html - 不透明度属性是否改变像素值

html - 如何设计一个非常简单的 HTML 页面?

javascript - 替换图像时文本闪烁(css 和 jquery)

javascript - jquery,如何在javascript中获取URL GET变量?

javascript - 我如何获得 JavaScript 中两个日期之间的差异?

javascript - 为浏览器设置视口(viewport)大小

javascript - HTML 表单重置不会恢复禁用的属性