0

我已经从 JQuery-UI 修改了模态对话框表单,并添加了两个下拉清单 (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");

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

在这里提琴: 添加仪器(SO问题版)。单击“添加新仪器”,选择型号,在序列号文本框中输入任何内容(1-8 个字符之间),然后选择几个服务,然后单击“添加仪器”。现在,再次单击“添加新仪器”,注意两个 DDCL 都设置为默认值“单击以选择...”。我希望他们成为客户做出的最后选择。

4

1 回答 1

2

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

我也有类似的问题,dropdownchecklist老实说,我认为尝试调整它不值得。它是一个过时的旧插件,它不能为最新的 jquery 提供适当的支持,并且不完全兼容最新的浏览器等(更多信息,请参阅本网站的限制部分。我最讨厌这个小部件的是它不支持链接,这是 jQuery 的一个非常重要的特性。这对我来说是个大问题。

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

  1. 我将表单中的数据(我的意思是selected 选项)存储在data我的body标签中。
  2. 所以当再次打开时,我从相同的地方获取这些值data并将其存储在一个变量中,selectedOpts.
  3. 设置selectedOptsselect标签
  4. "refresh"dropdownchecklist附加到select标签

这是一个演示: http: //jsfiddle.net/4D8LU/4/(它只是您演示的更新版本)

我添加到您的演示中的内容

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

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

    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");
    }
    

希望这可以帮助。同样,我建议您使用其他替代方法。对于其他想法,看看这个:10+ JQUERY SELECTBOX/DROP-DOWN PLUGINS

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

这个。我发现它非常灵活,支持最新的 jquery 版本,并且支持链接。

于 2013-06-08T17:10:26.317 回答