在添加下拉列表

时间:2015-08-04 18:01:16

标签: 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);
            }
     }
    
  2. 我想在我的代码中多次使用同一个函数,通过传递下拉列表的id和要输入的名称来检查输入的值是否唯一。但不知怎的,这不起作用。

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

    1. 我也使用相同的功能来编辑选项的文本。但不知何故,如果用户点击编辑并且他不想更改文本并单击“确定”,则会提示该选项已存在。 该选项只包含一次在弹出窗口中打开的选项。怎么检查这个?

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

1 个答案:

答案 0 :(得分:1)

  1. 您的选择器错误,应为$("#"+List+" option")return内的$.each()也不会从您的函数返回,但如果为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. 调用它