【问题标题】:How to prevent get value selected option got duplicated in select2 function?如何防止 get value selected 选项在 select2 函数中重复?
【发布时间】:2021-08-27 05:21:55
【问题描述】:

我有使用 jQuery select2 的 select 函数。我在显示从上一个表单中选择的值时遇到问题。

在我的页面详细信息中,我想显示用户选择的选定值。如果他们愿意,他们也可以更新。

如何根据我从 api ${e.tag.id} 检索到的 id 而不是像这样显示它?

-Red
-Yellow
-New  -> selected 
-Others

应该只显示一次New。

我将首先从我的 api url 中获取所有值,然后将其附加到 id=tag。如果用户还没有放置标签,它将为他们显示select tag,但如果用户之前已经插入了标签,则值将显示在<select> 框区域。但我不希望它出现在 <option> 上,因为它会被重复。

这是我尝试过的

  $('#tag').select2({
                placeholder: "Select Tag",
                allowClear: true
   });

 const getTagList = () =>{
        axios.get(`url`)
            .then(function (res) { 
                if(res.data.status == 'success')
                    {
                        if(res.data.result.length > 0)
                        {
                            res.data.result.map((e) => {
                                $('#tag').append(`<option value="${e.tag.id}">${e.tag.title}</option>`);
                            });
                        }
                    }
                });
        
        }




if(e.tag.id == '0'){ tagInfo+= ` <option value="" hidden>Select Tag</option>`;}
 else { tagInfo+= `<option value="${e.tag.id}" selected >${e.tag.title}</option>`;}


                    

  <!-- list tag -->

    <div class="row mb-4 align-items-end">
      <div class="col-md-10">
        <div class="form-group">
          <label class="form-label">Tag</label>
         <div class="form-control-wrap">
           <select class="" name="tag" id="tag">
               ${tagInfo}
           </select> 
        </div>
       </div>
      </div>         
    </div>


我已经从数据库中读取了值并将其显示在文本中。但我不希望它坐在如果值与它应该只出现一次相同的位置。相反,它应该只显示为选中状态。但是使用我当前的代码,它在列表中出现了两次。

【问题讨论】:

  • 您要根据值或文本删除?
  • 我已经从数据库中读取了值并将其显示在文本中。但我不希望它坐在&lt;option&gt; 上,如果该值与&lt;option&gt; 中的值相同,它应该只出现一次。但是使用我当前的代码,它在&lt;option&gt; 列表中出现了两次。
  • 如果数据库中的值重复,您可以选择不同的记录。
  • 您也可以在添加到选择之前检查 jQuery。
  • 在将其附加到 select2 之前,您需要检查重复项,然后确保在附加它们之后您必须调用一个名为 trigger("change") 的方法,请参阅此 Link跨度>

标签: javascript jquery jquery-select2


【解决方案1】:

我想如果你可以这样做。

=> 用于绑定您的选择

 const getTagList = () =>{
        axios.get(`url`)
            .then(function (res) { 
                if(res.data.status == 'success')
                    {
                        if(res.data.result.length > 0)
                        {
                            
                            res.data.result.map((e) => {
                                if($("#tag option[value='"${e.tag.id}"']").length==0){
                                      $('#tag').append(`<option value="${e.tag.id}">${e.tag.title}</option>`);
                                }
                            });
                        }
                    }
                });
        
        }

【讨论】:

  • 如果用户之前已插入,我将无法检索该值。我想在select text 中显示插入的值,但不在select &lt;option&gt; 中显示,这就是我将${tagInfo} 放入的原因
  • ${tagInfo} 包含什么,你能分享一下吗/
  • 表示您在 ${tagInfo} 中有选项,并且您还绑定了来自 api 的选项。我说的对吗?
  • 是的。如果用户已经选择了该选项。它将显示在“选择框区域中的文本”中,但我不希望它出现在
  • 在${tagInfo} else 中我希望它只显示${e.tag.title} 的名称,但是当用户单击下拉列表时,它将显示${e.tag.title} 被选中。
猜你喜欢
  • 2020-01-21
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2021-09-17
相关资源
最近更新 更多