javascript - 在添加到下拉列表之前检查重复的名称

标签 javascript jquery

我有两个问题:

  1. 我希望用户在下拉列表中添加值,但在此之前我使用此函数检查该值是否已存在于下拉列表中:

     function IsNameAlreadyPresent(List,Name){
         $.each($("'#'+List option"),function(i,e){
             if(e.innerHTML == Name){
                return true;
           }
       });
     }
    
    
     function AddOptionName() {
        var Name = $("#txtName").val(); 
        if(IsNameAlreadyPresent(List,Name)) {
             alert("Name \"" + Name + "\" already exists. \nPlease type an unique name.")
          }
        else{       
                AddNewOption(Name);
            }
     }
    

我想在代码中多次使用相同的函数,通过传递下拉列表的 id 和要输入的名称来检查输入的值是否唯一。但不知怎的,这不起作用。

如何将id作为参数传递($("'#'+List option")

  • 我也使用相同的函数来编辑选项的文本。但不知何故,如果用户单击“编辑”并且他不想更改文本并单击“确定”,则会发出警告该选项已存在。 该选项只有一次,包括在弹出窗口中打开的选项。如何检查这个?

     var x = document.getElementById("List");
         var l_sName = x.options[x.selectedIndex].text;
       $("#List option[value="+l_sName+"]").remove();
    
  • 最佳答案

    1. 您的选择器错误,应该是$("#"+List+"option")。另外,$.each() 内的 return 不会从函数中返回,但如果为 false,则会中断 $.each()。将您的 IsNameAlreadyPresent(List,Name) 更改为:

      function IsNameAlreadyPresent(List, Name) {
          var result = false;
          $.each($("#"+List+" option"), function (i, e) {
              if (e.innerHTML == Name) {
                  result = true;
                  return false;
              }
          });
          return result;
      }
      
    2. 对于这部分,您可以添加一个要排除检查的名称,例如:

      function IsNameAlreadyPresent(List, Name, Excluded) {
          var result = false;
          $.each($("#"+List+" option"), function (i, e) {
              if (e.innerHTML == Name && e.innerHTML != Excluded) {
                  result = true;
                  return false;
              }
          });
          return result;
      }
      
      function AddOptionName(Excluded = "") {
          var Name = $("#txtName").val();
          if (IsNameAlreadyPresent(List, Name, Excluded)) {
              alert("Name \"" + Name + "\" already exists. \nPlease type an unique name.")
          } else {
              AddNewOption(Name);
          }
      }
      

      然后使用 AddOptionName( $("#"+List+"option:selected").html() );

    3. 调用它

    关于javascript - 在添加到下拉列表之前检查重复的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31816168/

    相关文章:

    JavaScript 表单验证问题 - 必须单击提交两次

    javascript - 有没有办法为 HTML 下拉菜单设置说明文本但不用作选项?

    javascript - 使用 JQuery/JavaScript 调用远程计算机上的 Web 服务而不更改 Web 服务

    c# - 序列化包含数组的对象

    javascript - 如何动态更新我的对象?

    javascript - HTML 元素的自定义属性

    javascript - 用于检测不存在对象中的 JSON 属性的函数

    javascript - 包含聊天的 div,关注最后一个条目

    javascript - 清除超时()不起作用

    javascript - 使用 Javascript/JQuery 获取临时文件路径