刷新dropDownCheckList后保留并重新应用复选框和单选按钮的状态

时间:2013-06-06 18:13:29

标签: jquery jquery-ui drop-down-menu

我修改了modal dialog form from JQuery-UI并添加了两个dropdownchecklists(DDCL),其中一个带有单选按钮,用于我们制作或服务的乐器模型,另一个用于客户可以请求的一系列服务每种工具。我想保留单选按钮的状态。复选框,因为客户很常见的是添加几个相同类型的仪器,并且相同的请求服务仅更改序列号和可能的部件号(可以留空,需要S / N)。我正在使用:

$("#services").dropdownchecklist("refresh"); $("#modelNumber").dropdownchecklist("refresh");

刷新按钮&复选框状态(如果我不刷新,客户只接受显示的默认值,我实际上得到一个空输入而不是它在框中所说的)所以我可以重新检查按钮&他们想要输入的下一个乐器的复选框。我需要在刷新之前保留客户的选择,然后再将它们放回去。

我试图通过以下方式获取州:

var selectedServices = $("#services").prop("checked");

var selectedModel = $("#modelNumber").prop("checked");

但是当我们点击“添加新乐器”时,我无法弄清楚如何将它们重新应用于选择选项。我可以检查所有复选框并通过执行以下操作获取最后一个单选按钮:

selectedServices = $("#services").find("option").attr("selected", "selected"); selectedModel = $("#modelNumber").find("option").attr("selected", "selected");

在我进行上面显示的刷新之前,但这不是我需要的,那些只是检查最后一个单选按钮并给我一个列出所有可用的15项服务,基本上是“全选”。没用。

在这里小提琴:Add Instrument (SO question version)。单击“添加新仪器”,选择型号,将任何内容放入序列号文本框(1-8个字符之间),然后选择几项服务,并单击“添加仪器”。现在,再次单击“添加新仪器”,并注意两个DDCL都设置为默认值“单击以选择...”。我希望它们是客户的最后选择。

1 个答案:

答案 0 :(得分:2)

当我在相关问题中提出你的问题时,我正在寻找一些解决方案来设置多个选择菜单的值(很奇怪为什么它应该抛出这个问题,因为没有匹配的关键字)。所以,足够的背景。

我也遇到了与dropdownchecklist类似的问题,老实说,我认为不值得努力调整这个问题。它是一个过时的旧插件,不提供正确支持最新的jquery,并且不与最新的浏览器等完全兼容(更多信息,请参阅此site的限制部分。我是什么最讨厌这个小部件是因为它不支持链接,这是jQuery的一个非常重要的特性。这对我来说是一个破坏者。

去年我使用这个小部件时遇到了类似的困境,我找到了解决问题的方法。这就是我所做的:

  1. 我在select标记的data中存储了表单中的数据(我的意思是body ed选项)。
  2. 因此,当再次打开时,我从同一data获取这些值并将其存储在变量selectedOpts中。
  3. selectedOpts设置回select标记
  4. "refresh"附加到dropdownchecklist代码的select
  5. 这是一个演示:http://jsfiddle.net/4D8LU/4/(它只是演示的更新版本)

    我添加到您的演示

    1. "Add Instrument"初始化dialog的回调中,我添加了一行代码,可将您选择的选项推送到data body标记。

      $("body").data("prevOpts", 
                     {
                      "prevOpts": {
                       modelno": modelNumber.val(),
                           "services": services.val()
                      }
      });
      
    2. 您的resetDDCL来电现在将从data获取值并将这些值设置为select。这是功能:

      function resetDDCL() {
         //take the data from body
         var selectedOptions = $("body").data("prevOpts").prevOpts;
      
        //set the services
        services.val(selectedOptions.services);
        services.dropdownchecklist("refresh");
      
        //set the model number
        modelNumber.val(selectedOptions.modelno);
        modelNumber.dropdownchecklist("refresh");
      }
      
    3. 希望这会有所帮助。同样,我建议你使用其他替代方案。对于其他想法,请查看:10+ JQUERY SELECTBOX/DROP-DOWN PLUGINS

      我目前正在使用的样式下拉菜单

      <强> THIS 即可。我发现它非常灵活,支持最新的jquery版本,并支持链接。