Jquery 在knockout js中,当按钮单击时,选择中的文本不会更改?

Jquery 在knockout js中,当按钮单击时,选择中的文本不会更改?,jquery,knockout.js,single-page-application,Jquery,Knockout.js,Single Page Application,在我的spa中,我使用敲出js从api绑定数据以成功选择选项 代码: 选择。。 self.SelectedItems=ko.observatarray([]); var vm={ 分类位置数据:ko.observableArray(位置数据), ClassificationPositionID:ko.observable(), SelectedItems:ko.observatarray([]) }; 但在“刷新”按钮单击中,我想将所选选项更改为默认文本“选择…”。我在button clic

在我的spa中,我使用敲出js从api绑定数据以成功选择选项

代码:


选择。。
self.SelectedItems=ko.observatarray([]);
var vm={
分类位置数据:ko.observableArray(位置数据),
ClassificationPositionID:ko.observable(),
SelectedItems:ko.observatarray([])
};
但在“刷新”按钮单击中,我想将所选选项更改为默认文本“选择…”。我在button click中编写了下面给出的代码

 <a data-role="button" data-transition="slide" href="#page3" data-icon="arrow-r"
              data-iconpos="right" data-bind="event: { click: btnAddContactLink }">
                 Sample
              </a>
self.btnAddContactLink = function () {
   self.SelectedItems.removeAll();
}

self.btnAddContactLink=函数(){
self.SelectedItems.removeAll();
}
单击“刷新”按钮后,不会更改文本。但如果我单击该下拉列表,它会显示“选择…”作为所选选项,如下所示。


我不知道我在哪里犯了错误。请帮助我,朋友们不要像那样使用jQuery来操作DOM。尝试直接操纵视图模型,并让Knockout为您处理UI更新。您需要使用
selectedOptions
绑定来执行此操作

假设此视图模型:

var vm = {
    ClassificationPositionData: ko.observableArray([i1, i2]),
    ClassificationPositionID: ko.observable(),
    SelectedItems: ko.observableArray([])
};
您可以将
选择的
数据绑定更改为以下内容:


这会将所选项目绑定到视图模型中的可观察项。然后使用以下方法刷新并重置为基本选项:

vm.refresh = function() { vm.SelectedItems.removeAll(); };
看看这一切都在起作用


PS:如果您还有
选项caption
的绑定,我认为您不需要显式的
选项
元素

JS

var vm = {
    selected :  ko.observable(), 
    items : ['a', 'b', 'c'],
    defaultText:  ko.observable('Default text'),
    changeDefaultText : function(){
        vm.defaultText(vm.selected());
    }
};

ko.applyBindings(vm);
查看

<select  data-bind="options: items, optionsCaption: defaultText, value : selected"></select>

<button data-bind="click : changeDefaultText">ChangeDefaultText</button>

更改默认文本

我希望它能有所帮助。

只需将您的
绑定到可观察变量,并将其值设置为null即可取消选择任何项目

<select id="ddlClassificationPosition" name="" data-theme="c" data-bind="options: ClassificationPositionData, value: selectedPosition, optionsValue: 'ClassificationPositionID', optionsText: function (i) { return i.Classification + ':' + i.Position }, optionsCaption: 'Choose..'"></select>

<button data-bind="click: function(){ $root.selectedPosition(null); }">Reset</button>

重置
工作小提琴:

单选按钮代码:

  <input id="radio1" name="rbtnShift" value="1" data-theme="c" type="radio">

嗨,杰伦,非常感谢你的回复。但是你的编码对我不起作用。我不知道为什么。我根据您的更改了编码。我得到以下错误未捕获错误:无法解析绑定。消息:ReferenceError:SelectedItems未定义;绑定值:选项:ClassificationPositionData,选项值:'ClassificationPositionID',选项文本:函数(i){return i.Classification+':'+i.Position},selectedOptions:SelectedItems,选项Caption:'Choose..您是否创建了一个
SelectedItems
可观察的同级(到ClassificationPositionData等)视图模型上的属性?如果您用视图模型的相关部分扩展您的问题,可能会有所帮助。是的。我像这样创建self.SelectedItems=ko.observableArray([]);。但这对我不起作用。如果我犯了什么错误,请告诉我。如果可能,请为我更新代码。因为我是敲除js.Hmm的初学者,所以不要认为是我必须更新代码(我的小提琴正在工作),相反,你应该在你的问题中包含更多的代码,以帮助我们重现你的问题;-)对不起,朋友。我改变了我的编码和你的一样。请看上面并告诉我在哪里犯了错误Hi f_marinez,谢谢你的回复..我想清除按钮点击中的几个文本框值。但您的代码仅适用于select中的“修复文本”选项。你能帮我重新编写代码吗?@Giri,你能展示你完整的视图模型和文本框的数据绑定吗?TexBox啊??我正在寻找将“选择…”文本设置为按钮时选择的文本的解决方案click@Giri,“我想清除该按钮中的几个文本框值。但您的代码仅用于选择中的修复文本选项。”哦,对不起,朋友。是的,我有三个文本框和一个选择选项。刷新按钮时,我想清除文本框值,并将选择选项文本设置为“选择…”。。所以请给我的问题的解决方案Hi Damien,谢谢你的回复,但是你的代码没有用小提琴。。请检查并重新给我写信。你能解释一下什么不起作用吗?你在期待什么?因为当我点击按钮时,默认文本会改变。是的。它变了。但它不会将该文本显示为选定文本。我想将该文本显示为选定文本。请帮助meSo您想更改值而不是默认文本。否否。。。在用户选择该下拉列表中的选项后,单击“刷新”按钮,然后将所选文本显示为“选择…”。您的代码正在更改文本,但未将文本显示为选定文本。请帮助我,朋友们,请不要编辑您的问题之外的所有上下文和代码。这样做只会使它对未来的访问者毫无用处。
  <input id="radio1" name="rbtnShift" value="1" data-theme="c" type="radio">
  $("input[type='radio']").checkboxradio();
  $("input[name^='rbtnShift']").attr("checked", false).checkboxradio("refresh");