javascript - 检查用户使用 JavaScript 添加的选项

标签 javascript html

我有一个下拉菜单,其中有预填充的值和一个输入字段,供用户向下拉菜单添加更多值,添加部分工作正常但有一个重复条目检查,如果我输入循环中嵌套的 else 会永远存在,如果我将它移出,它会绕过对重复条目的检查。有关如何解决此问题的任何建议?

<select id="myDrop">
    <option value="Select" disabled selected>Select</option>
    <option value="Games">Games</option>
    <option value="Movies">Movies</option>
</select>
<input type="text" id="userEntry">

<button onclick="addEntry()">Add Entry</button>
<button onclick="myBtn()">Submit</button>

<script>
    function addEntry() {
    
        var dropDown = document.getElementById('myDrop');
        var uEntry = document.getElementById('userEntry');
    
        if (uEntry.value === "") {
            alert("Please enter your option value");
        } else {

            for (var i = 0; i < dropDown.length; i++) {
                if (dropDown[i] === uEntry.value) {
                    alert("Record Exists");
                } else {
                    var uOption = document.createElement('option');
                    uOption.text = uEntry.value;
                    dropDown.add(uOption);
                    alert('Option added');
                }
            }
        }
    }
 </script>

最佳答案

您需要检查该值是否已存在于下拉列表中,如果找到则返回。你现在所做的方式,因为你每次都不断添加 for else 条件,你正在进入一个无限循环。 您还需要比较 dropdown[i].valueuEntry.value 而不是节点 dropdown[i]。

<select id="myDrop">
    <option value="Select" disabled selected>Select</option>
    <option value="Games">Games</option>
    <option value="Movies">Movies</option>
</select>
<input type="text" id="userEntry">

<button onclick="addEntry()">Add Entry</button>
<button onclick="myBtn()">Submit</button>

<script>
    function addEntry(){

        var dropDown = document.getElementById('myDrop').children;
        var uEntry = document.getElementById('userEntry');

        if(uEntry.value === ""){
            alert("Please enter your option value");
        }
        else{

        for(var i = 0 ; i< dropDown.length;i++){
            if(dropDown[i].value === uEntry.value){
                alert("Record Exists");
                return;
            }
        }
               var uOption =  document.createElement('option');
                uOption.text = uEntry.value;
                dropDown.add(uOption);
                alert('Option added');
           
        }
    }
 </script>

关于javascript - 检查用户使用 JavaScript 添加的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45499496/

相关文章:

javascript - D3 中的文本换行

javascript - 一次只显示一个内容(在 HTML 上使用 {{each}})

javascript - 获取不同类型的两个对象的相同部分

html - 响应式设计单元

html - 使用 Selenium 在 Ruby 中选中复选框时访问出现的类属性

html - 全屏适合两列图像

javascript - 使用 .ajax() 加载远程 URL - 不工作

javascript - 如何将第三方库注入(inject)到 angular.js 服务中

javascript - 由于 zindex,CSS 悬停功能无法正常工作

javascript - 使用 Javascript 验证电话号码