1

私は2つの入力ボックスを持っており、両方が以下のようなぼかしイベントで同じ関数を呼び出します

 <td>
                <input id="txtDate1" data-bind="value:Date1, event: { blur: ValidateData }"  />

            </td>
            <td>
                <input id="txtDate2" data-bind="value: Date2, event: { blur: ValidateData }" />
            </td>

ビューモデルで関数を作成しましたvalidateData

 this.ValidateDate = function () {

        var txtData = $('#txtDate1').val();

        if (!valid_date(txtData )) {

               alert("Date not valid");
                $(this).focus();

 };

この関数には、フォーカスを失ったときにテキストボックスの実際の値を渡したいです。私の問題は、この関数に渡す値がわからないことです。

どうすれば達成できますか?

4

2 に答える 2

2

このようにできるのはとても簡単です

data-bind="value:Date1, event: { blur: ValidateData.bind($data,Date1) }"

そしてあなたの機能

this.ValidateDate = function (myval) {
    // your code
};
于 2014-06-04T11:54:55.447 に答える
1

パラメータを追加すると、ノックアウトはcurrent model valueオブザーバブルを渡します。あなたの場合、parentofDate1とを渡しますDate2Date1以下を使用して と区別できますDate2

<input id="txtDate1" data-bind="value:Date1, 
       event: { blur: 
                    function (data, event) { 
                        ValidateDate('Date1', data, event) 
                    } 
              }"  />

this.ValidateDate = function (whichDate, data, event) {

    if (!valid_date(ko.utils.unwrapObservable(data[whichDate]))) {
           alert("Date not valid");
            $(this).focus();
};

ドキュメントを参照してください:

ハンドラーを呼び出すと、Knockout は現在のモデル値を最初のパラメーターとして提供します。

于 2014-06-04T11:33:48.413 に答える