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

ノックアウト値バインディングは、バインド先の入力の変更イベントをサブスクライブします。val を使用して jquery の入力を更新する場合は、変更イベントを発生させる必要があります。そうしないと、値バインディングがトリガーされません。

たとえば

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

お役に立てれば。

于 2012-06-21T15:56:45.000 に答える