2012-06-21 21 views
0

我有幾個文本框:本地&國外的電話號碼和一個複選框來切換它們,就像這樣:KnockoutJS觀察到不遵守jQuery的空()事件

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」複選框,這些手機NUMS驗證(它調用TogglePhoneFields(真))和勾去掉它,可觀測值不清除

我正在努力解釋這一點,如果根本不清楚,我可以寫一個jsFiddler。 這個問題基本上是如何更新可觀察項目,當它的值由JavaScript代碼操縱?

回答

2

敲除值綁定訂閱在它們綁定的輸入上更改事件。如果您使用val更新jquery中的輸入,則需要觸發更改事件,否則將不會觸發值綁定。所以

例如

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

希望這有助於。