【问题标题】:How can I dynamically disable a text box using Knockout's observables?如何使用 Knockout 的 observables 动态禁用文本框?
【发布时间】:2014-07-09 12:19:05
【问题描述】:

我正在实施注册表单,当我单击提交按钮时,我想使用 Knockout 禁用文本框。

我尝试了以下方法:

var viewModel = {
    Textboxcontrol: ko.observable(true), // by default textbox is enable to edit
    Register: {
        Init: function () {
        Textboxcontrol= false; // Updating the value to false 
                               // so Textbox should be disabled.
    }
};

ko.applyBindings(viewModel);

在 UI 上我写了如下

<input  data-bind="value: Name, enable: Textboxcontrol" 
        type="text" autocomplete="off" />

但问题是,如果我将值更改为 Textboxcontrol= false;,它也只将值作为 True.. 并且文本框不会禁用。

【问题讨论】:

    标签: knockout.js knockout-mapping-plugin knockout-validation knockout-mvc


    【解决方案1】:

    由于 Textboxcontrol 是一个可观察对象,因此您必须通过将其作为函数调用来更改其值。另外,您必须使用this 来访问“Init”函数中的 Textboxcontrol 属性:

    var viewModel = {
      Name: ko.observable(''),
      Textboxcontrol: ko.observable(true),
      Register: {
        Init: function () {
          this.Textboxcontrol(false);
        }
      }
    };
    ko.applyBindings(viewModel);
    

    【讨论】:

    • 非常感谢您的回复。当我应用 this.Textboxcontrol(false) 时出现脚本问题“对象不支持属性或方法‘Textboxcontrol’。可能是什么问题?知道吗?谢谢
    • 这是一个与我建议的完全相同的解决方案的小提琴:jsfiddle.net/HbfhB。如果您的代码不起作用,可能还有其他问题需要修复(您可以将其发布到某个地方吗?)
    • 我确定在 js 文件中存在一个小错误。这是 js 文件,感谢您的帮助。 jsfiddle.net/deepakreview/9bkMS/1
    • @user2010114 在您的成功函数中,当您尝试设置EnabletxtControl 值时,this 可能不是您的viewModel - 尝试使用viewModel.EnabletxtControl(false)
    • 您可以编辑您的小提琴以使其快速可测试吗?没有简单的方法可以尝试禁用文本框。
    猜你喜欢
    • 2014-05-10
    • 2016-12-13
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多