Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对多个选择框上的选定选项使用一个选项列表进行淘汰_Javascript_Knockout.js_Knockout 2.0 - Fatal编程技术网

Javascript 对多个选择框上的选定选项使用一个选项列表进行淘汰

Javascript 对多个选择框上的选定选项使用一个选项列表进行淘汰,javascript,knockout.js,knockout-2.0,Javascript,Knockout.js,Knockout 2.0,有问题的确切证明,即: 我在同一页上有多个选择框。选择框的所有选项均采用给定形式: <option value="#id_num">StringVal</option> 选择框如下所示 <select name="first" data-bind="selectedOptions: idlist"> ... <option value="2">Blah</option> <option value="3"

有问题的确切证明,即: 我在同一页上有多个选择框。选择框的所有选项均采用给定形式:

<option value="#id_num">StringVal</option>
选择框如下所示

<select name="first" data-bind="selectedOptions: idlist">
    ...
    <option value="2">Blah</option>
    <option value="3">Blah</option>
    ...
</select>

<select name="second" data-bind="selectedOptions: idlist">
    ...
    <option value="1">Blah</option>
    ...
</select>

<select name="third" data-bind="selectedOptions: idlist">
    ...
    <option value="4">Blah</option>
    ...
</select>

...
废话
废话
...
...
废话
...
...
废话
...
我的问题是:当我从selectbox中选择一个选项时,其他selectbox将返回其初始状态。这与selectedOptions直接相关,因为如果删除selectedOptions指令,则不会发生此问题

任何建议都将受到欢迎

谢谢

绑定用于启用多选的单个
标记。它将保持选项框中每个项目的数组处于选中状态

您之所以看到自己的行为,是因为当您从其中一个下拉列表中选择单个值时,selectedOptions绑定会立即启动。逻辑是这样的:

  • 目标
    开火时的更新
  • 绑定从
    中提取值并更新底层可观察数组
  • 自值更改后,可观测阵列火将更新
  • 辅助下拉列表响应更新,并根据数组中的内容更新其选定值
  • 由于
    标记集中不存在任何值,因此会清除该值

  • 这就是为什么你会看到这种行为。如果要从所有选定选项中收集组合,则需要编写新的自定义绑定,或为要绑定到的每个
    创建单独的数组。

    Josh,感谢您的详细解释。我以为selectedOptions是一个只读列表,用于向SelectBox提供初始数据,但没想到它会在选择后更新。@hinoglu-没问题,伙计。在所有绑定中,我认为options/selectedOptions绑定可能是最棘手的。老实说,我最好的建议是浏览一些在线信息并编写自己的自定义绑定(一个简单的绑定)。它将在帮助解开绑定在击倒中如何工作的神秘性方面创造奇迹。
    <select name="first" data-bind="selectedOptions: idlist">
        ...
        <option value="2">Blah</option>
        <option value="3">Blah</option>
        ...
    </select>
    
    <select name="second" data-bind="selectedOptions: idlist">
        ...
        <option value="1">Blah</option>
        ...
    </select>
    
    <select name="third" data-bind="selectedOptions: idlist">
        ...
        <option value="4">Blah</option>
        ...
    </select>