KnockoutJS observable不观察jQuery的empty()事件

KnockoutJS observable doesn't observe jQuery's empty() event

本文关键字:empty 事件 jQuery observable 观察 KnockoutJS      更新时间:2023-09-26

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

  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代码操作时,如何更新可观察项?

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

所以例如

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

希望这有帮助。