繁体   English   中英

Javascript 弹出 windows

[英]Javascript pop-up windows

我正在使用 javascript 制作过滤器,但问题是每当我在过滤器中输入内容时,javascript window 就会弹出,甚至在它开始过滤之前。 我的计划是在我发现没有任何内容与输入匹配时弹出 window,但问题是没有任何变化,或者 window 在过滤之前弹出。 HTML 代码:

{% extends "layout.html" %} 
{% block content %}
<div style="text-align:center"><h1>查找患者</h1></div>
<script>
  document.addEventListener('contextmenu', event => event.preventDefault());
  event.preventDefault()
  </script>
</head>
<body>

<input type="text" id="myInput" onkeyup="myFunction()" placeholder="请输入患者姓名..." title="Type in a name">

<ul id="myUL">
  {% for item in values %}
  <div class=content-section">
    <li><a href="/patient-info/{{ item.name }}">患者姓名: {{ item.name }} | 性别: {{ item.gender }} | 年龄: {{ item.age }} | 手机号: {{ item.number }}</a></li><br>
  </div>
{% endfor %}
</ul>

<script>
function myFunction() {
    var input, filter, ul, li, a, i, txtValue;
    input = document.getElementById("myInput");
    filter = input.value.toUpperCase();
    ul = document.getElementById("myUL");
    li = ul.getElementsByTagName("li");
    for (i = 0; i < li.length; i++) {
        a = li[i].getElementsByTagName("a")[0];
        txtValue = a.textContent || a.innerText;
        if (txtValue.toUpperCase().indexOf(filter) > -1) {
            li[i].style.display = "";
        } else { 
            li[i].style.display = 'none'
             alert("找不到此病人"); 
        }
    }
}
</script>
{% endblock content %}

改变你的逻辑如下,

function myFunction() {
var input, filter, ul, li, a, i, txtValue;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
ul = document.getElementById("myUL");
li = ul.getElementsByTagName("li");
// Adding a new flag variable to verify whether a match found or not
var nothingFound = true;
for (i = 0; i < li.length; i++) {
    a = li[i].getElementsByTagName("a")[0];
    txtValue = a.textContent || a.innerText;
    if (txtValue.toUpperCase().indexOf(filter) > -1) {
        li[i].style.display = "";
        // you found something , so set nothingFound to false
        nothingFound = false;
    } else { 
        li[i].style.display = 'none'
        // Remove the below alert
        // alert("找不到此病人"); 
    }
}
// Raise Alert only when nothingFound  is still true
if(nothingFound ) {
  alert("找不到此病人"); 
}

}

简单的逻辑在初始阶段可能很难。 尝试研究类似算法的故事/策略将在初始阶段对我们有所帮助。 以后我们就不需要了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM