HTML多个选择更改“未选择”文本

时间:2017-07-12 15:42:43

标签: javascript html knockout.js

我有一个带有多选选项的选择列表:

<select data-bind="attr:{'id':'multilistS'+Id()},foreach: Hlist" multiple="multiple">
     <option data-bind="click:$root.changeShole,value:$data.Id, text:N,attr:{'selected':$data.Sel}">Cheese</option>
</select>

但我想更改'None Selected'文字。可以使用nonSelectedText选项在HTML代码或JavaScript中执行此操作吗?

2 个答案:

答案 0 :(得分:2)

你真的应该采用John Pavek的建议来阅读选项绑定。 Knockout专门为此提供了很好的工具,你的构造不使用它们。

noneselectedtext似乎是jQuery-UI multiselect widget的一项功能。如果您正在使用它,那么您将需要使用binding handler for it

以下是您所描述内容的简单示例,其中的消息会根据是否选择了多选中的任何内容而更改。

&#13;
&#13;
const vm = {
  optionsCaption: ko.pureComputed(function() {
    return (vm.selectedOptions().length === 0) ? 'Please select at least one' : 'ok';
  }),
  selectedOptions: ko.observableArray([]),
  Hlist: ko.observableArray([{
    Id: 1,
    N: 'One'
  }, {
    Id: 2,
    N: 'Two'
  }])
};

ko.applyBindings(vm);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div data-bind="text: optionsCaption"></div>
<select data-bind="options: Hlist, optionsText: 'N', optionsValue: 'Id', selectedOptions: selectedOptions" multiple="multiple">
</select>
<div data-bind="foreach: selectedOptions">
  <div data-bind="text:$data"></div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我猜你想要的是最初的字段说&#34;没有选择&#34;。当用户选择某些选项时,文本会发生变化。那是对的吗?如果是,这可能有效:

<option disabled selected> value>None Selected</option>