【问题标题】:How to change value of one textbox instantly as soon as the value of another textbox is going to change一旦另一个文本框的值发生变化,如何立即更改一个文本框的值
【发布时间】:2015-05-10 13:39:25
【问题描述】:

我正在制作一个包含三个文本框的 asp.net 网页。 让我们考虑 textbox1、textbox2、textbox3。现在,当我加载页面时,textbox1 的默认值为 10000。现在我想在 textbox2 中输入一个值。一旦我在 textbox2 中输入值,它应该会自动在 textbox3 中显示剩余的值。 例子: Textbox1 值的默认值为 10000。 当我在 textbox2 中输入 1500 时。 textbox3 的值应该是 8500。只要 textbox2 的值发生变化,它就会立即变化。无论 textbox2 的值是什么,它都应该从 textbox1 中减去,并且应该立即在 textbox3 上闪烁,而无需按下任何按钮。

【问题讨论】:

  • 您将需要 javascript 来执行此操作。你以前用过jquery的javascript吗?
  • 请显示您尝试过的代码。

标签: asp.net


【解决方案1】:

有多种方法可以做到这一点,目前最简单的是 KnockoutJS

您可以将模型绑定到所有三个文本框。第三个框将绑定一个computed observable

像这样:

假设您的 UI 代码如下所示:

<div id="application">
    <input type="text" data-bind="value: init1, valueUpdate='afterkeydown'" value="1000"/>
    <input type="text" data-bind="value: init2, valueUpdate='afterkeydown'"/>
    <input type="text" data-bind="value: computed"/>
</div>

JavaScript 代码如下所示:

$(function(){
    var ViewModel = new function(){
        this.init1 = ko.observable(1000);
        this.init2 = ko.observable(0);
        this.computed = ko.computed(function(){ 
            return this.init1() - this.init2();
        });
    };

    var vm = new ViewModel();
    ko.applyBindings(vm, document.getElementById('application');
});

你需要 jQuery 和 KnockoutJS 才能工作。

【讨论】:

  • 这就像 textbox1 正在从数据库中获取价值。用户只能在 textbox2 中输入值,而 textbox3 将自动显示减去的值
  • @AbhishekPradhan 这是客户端代码。这种魔法只有在客户端才有可能。但是,您可以编写 Ajax 调用来从 ViewModel(vm) 中提取数据
猜你喜欢
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
相关资源
最近更新 更多