使用用户输入

时间:2016-05-23 17:34:23

标签: javascript html

好的所以我们有一个带有名字的数组,以及一个用户输入字符串的输入字段,我们想给他起名字建议。名字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,整个数组显示为名称建议..我不想要那个。我想要一个建议只出现时输入字段是非空的。当用户删除他到目前为止输入的内容时,我不想提出任何建议。我该怎么做?

2 个答案:

答案 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,在点击空格后,它会搜索数组中与空格匹配的所有内容,在这种情况下似乎是数组中的所有内容。