0

我有几个文本框:本地和外国电话号码以及一个用于切换它们的复选框,如下所示:

  TogglePhoneFields = function(isForeign) {
    if (isForeign) {
      $('#Phone_LocalNumber').attr('disabled', 'disabled');
      $('#Phone_LocalNumber').val('');
      $('#Phone_ForeignPhoneNumber').removeAttr('disabled');
      return $('#Phone_ForeignPhoneNumber').focus();
    } else {
      $('#Phone_LocalNumber').removeAttr('disabled');
      $('#Phone_ForeignPhoneNumber').attr('disabled', 'disabled');
      return $('#Phone_ForeignPhoneNumber').val('');
    }
  };

加价:

<input data-bind="value: localnumber" 
    id="Phone_LocalNumber" type="text" value='' />

<input data-bind="checked: isForeignPhoneNumber" 
    id="Phone_IsForeignPhoneNumber" type="checkbox" value="true" />

<input data-bind="value: foreignphonenumber" 
    id="Phone_ForeignPhoneNumber" type="text" value="" />

而且我对这些电话号码进行了验证,很明显,在您在本地电话号码中输入一个值后,勾选“IsForeign”复选框(它调用 TogglePhoneFields(true) )并取消勾选它,可观察值不会被清除

我正在努力解释这一点,如果根本不清楚,我可以写一个 jsFiddler。问题基本上是当它的值被javascript代码操作时如何更新可观察项目?

4

1 回答 1

2

Knockout 值绑定订阅它们绑定到的输入上的更改事件。如果使用 val 更新 jquery 中的输入,则需要触发更改事件,否则不会触发值绑定。

所以例如

$('#Phone_LocalNumber').val('').change();

希望这可以帮助。

于 2012-06-21T15:56:45.000 回答