当前位置: 首页 > 知识库问答 >
问题:

使用按钮清除从JSP/Ajax填充的下拉列表Select2只工作一次

欧阳学真
2023-03-14

我有一个页面,在其中对数据库进行查询,应用了12个过滤器(每个过滤器对应一个select2下拉菜单)。

当页面加载时,默认情况下将使用来自java控制器的数据填充所选内容。

jsp页面中的示例:

<select id="selectFPA" name="selectFPA" form="formResult" class="form-control">
    <option selected>All the results</option>
    <c:forEach items="${fpaList}" var="fpaList">
        <option><c:out value="${fpaList.fpaname}" /></option>
    </c:forEach>
</select>

例如,假设我们有两个选择过滤器(下拉):

选择1(动物组):-鸟类-哺乳动物

选择2(动物名):-鹦鹉-狗

当我想清除应用的过滤器并返回到原始的select内容(每次从java控制器加载页面时默认出现的内容)时,问题就来了。

我尝试了很多事情,从类似的Stackoverflow问题没有成功。

我最后尝试的是:

>

  • 将select的初始内容保存在变量中:

    常量fpa=$(“#selectfpa”).find(“option”).clone();

    Onclick事件(Reset filters按钮)

            $("#ResetFilters").on("click",function() {
                //first we empty the content  
                $('#selectFPA').empty().trigger('change.select2');
                //original value injection
                $("#selectFPA").html(fpa),
                $('#selectFPA').trigger('change.select2')
            })
    

    如果我按了一次按钮,这工作很好,如果我按了第二次按钮,选择器在默认情况下随机选择不同的值,它们的行为很奇怪。

    我知道这是一个非常具体的问题,但有人能帮我吗?我做错了什么?

    谢谢你。

  • 共有1个答案

    冀阳文
    2023-03-14

    我认为根据这个答案,您不能在jquery中创建常量,这就是它只在第一次工作而下一次不工作的原因。另外,解决方案可以将clone值分配给某个div并在需要时随时获取它。如下所示:

    //call when page loads for the first time
    $(document).ready(function() {
      //cloning
      var fpa = $("#selectFPA").find("option").clone();
      //assigning value to div
      $("#abc").html(fpa);
    
    
      $("#ResetFilters").on("click", function() {
    
        //getting clone value from div
        var c = $("#abc").find("option").clone();
        //first we empty the content  
        // $('#selectFPA').empty().trigger('change.select2');
        //original value injection
        $("#selectFPA").html(c);
        //$('#selectFPA').trigger('change.select2')
      });
    
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <select id="selectFPA" name="selectFPA" form="formResult" class="form-control">
      <option selected>All the results</option>
      <option>1</option>
      <option>2</option>
    
    </select>
    
    <button id="ResetFilters">Reset</button>
    <div id="abc" style="display:none"></div>
     类似资料:
    • 我有一个包含5列的mysql数据库表。 id,columnA,columnB,columnC,columnD 我用这些值填充datatable,因此每列有2个(不同的)值。 我希望用户可以从下拉列表中选择这些值。当他/她从columnA中选择第一个数据时,columnB值会根据所选值出现在另一个选择框中。等等..所以我想我需要使用Ajax-jQuery。这是我使用的脚本, 和php代码。 我得到了

    • 问题内容: 就像标题中所说的那样,尽管我对尚未付诸实践的理论很熟悉,但我仍在尝试使用jQuery,JSON和AJAX创建下拉菜单,因此,任何建议,演示代码段或教程都将不胜感激,因为我想开始最好的开始! 提前感谢! 问题答案: 您需要执行$ .getJSON调用以从document.load或其他一些事件http://api.jquery.com/jQuery.getJSON/上的服务器中获取jso

    • 问题内容: 我已经用AJAX填充了ASP.net下拉列表,现在我需要获取ID以C#方法存储到数据库中((我正在使用LINQ) 这是我的网络方法 我的test.aspx代码 问题答案: 如果在中添加选项,则无法从中获取所选值。您可以尝试以下

    • 问题内容: 我知道在这个问题上有很多问题,但是我仍然不确定该怎么做。 我有一个名为“ CuisineForm”的HTML表单,在用户选择了美食类型之后,AJAX将该表单发送到服务器。AJAX调用工作正常,并且服务器以JSON响应进行响应,其中包含此特定美食的所有服务时间。这些服务时间分为早餐,午餐和晚餐。 这些时间需要以相同的形式填充到3个单独的下拉菜单中。 但我真的不知道如何处理JSON结果以填

    • 问题内容: 我需要使用JavaScript根据下拉菜单A中的选择更改下拉菜单B的内容。没有涉及到数据库查询- 我事先知道应该在A中选择B的内容。我已经找到了一些使用AJAX的示例,但是由于没有涉及到数据库查询,所以没有必要。谁能为我指出一些示例代码以实现此目的? 问题答案: function configureDropDownLists(ddl1, ddl2) {

    • 问题内容: 我设法用json对象填充下拉菜单,效果很好。目前,我正在尝试根据从下拉菜单中选择的选项显示隐藏div中的图像。当下拉列表由json对象填充时,我将如何检索图像数据。 HTML JSON文件 这就是我使用jquery填充下拉菜单的方式。 jfiddle中任何有效的示例,将不胜感激!谢谢。 问题答案: 现场演示