正規表現で入力をフォーマットしているノックアウトページがあります。入力フィールドをMM/dd/yyyy形式にします。したがって、ユーザが "1111"を入力すると、入力されたvboxは "01/01/2011"に、または "01111"には "01/01/2011"と表示されます。ノックアウトが更新された値を送信しない
私が直面している問題は、完全にフォーマットされたアイテムではなく、ユーザーが入力したキーストロークのみを返すことです。たとえば、ユーザーが入力している場合は、「1111年は、」私はここのHTMLセグメント
<input id="inpEventDt" placeholder="MM/DD/YYYY" class="input-small" data-date-blur="true" data-regex="^((\d{0,2})|(\d{1,2}/?\d{0,2})|(\d{1,2}/?\d{1,2}/?\d{0,4}))$"
type="text" data-bind="textInput: dateofevent"/>
がある代わりに、「2011年1月1日」
の「1111」取り戻すそして、私はノックアウトを持っているか、これはありますバインディング
var ViewModel = function (eventdt) {
var self = this;
self.dateofevent = ko.observable(eventdt);
}
viewModel = new ViewModel("");
ko.applyBindings(viewModel);
私が間違っていることを理解しようとしています。
あなたのテキスト入力は、 'dateofevent'変数に束縛されています。だからノックアウト以外のものを使って入力値を変更するときはいつでもノックアウト変数を新しい値で更新する必要があります。私はノックアウトを使用して拡張またはサブスクライブし、サブスクライブ関数内の正規表現の検証を行うことをお勧めします –
あなたは例がありますか? – Mhoque
https://jsfiddle.net/kyr6w2x3/68/ここでは、ユーザーが特殊文字を入力しないようにする例を示します。 validate関数内で妥当性検査を行い、それを再度ターゲットに置き換える必要があります。 –