2

Kendo UI Masked Textbox と MVVM 値バインディングを使用しています。

ビューモデルの電話番号には、「()-」などのプロンプト文字は含まれず、数字のみが含まれます。

var viewModel = kendo.observable({ phoneNumber: "1234567890", onChange: function () { alert("event :: change " + this.get("phoneNumber")); } }); kendo.bind($("#example"), viewModel);

フォームの値を変更し、viewModel phoneNumber を調べる場合 (onchange 関数を参照)。phoneNumber に特殊文字/プロンプト文字が含まれるようになりました。phoneNumber: "(444) 555-5555"

これは私の問題です。MaskedTextbox の値がphoneNumber: "4445555555"、特殊文字を含まない数字のみを返すことを期待しています。

完全なコード スニペット @JS Fiddle

4

1 に答える 1

0

さらに調査を行い、答えを見つけました

MVVM の使用時にオブザーバブルにデータバインドされている値のマスクを解除するための回避策。1 つの maskedtextbox 変更イベント ハンドラーで、任意の値バインディングの書式設定を削除できます。 <ul data-role="listview"> <li> <label> Home Phone: <input type="text" data-role="maskedtextbox" data-bind="value: homePhone, events: { change: maskStrip }" data-mask="(000) 000-0000" /> </label> </li> <li> <label> Cell Phone: <input type="text" data-role="maskedtextbox" data-bind="value: cellPhone, events: { change: maskStrip }" data-mask="(000) 000-0000"/> </label> </li> </ul>

var vm = kendo.observable({ homePhone: null, cellPhone: null, maskStrip: function (e) { var that = e.sender, stripped = that._unmask(that.value()), obs = e.data, val = that.element.data("bind"); if (val) { val = val.substring(val.indexOf('value: ') + 7); //remove properties before if (val.indexOf(',') > -1) val = val.substring(0, val.indexOf(',')); //remove properties after obs.set(val, stripped); } } });

于 2015-04-02T14:51:58.697 に答える