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

如果添加参数,knockout 将传递current model valueobservable。在您的情况下,它将通过parentofDate1Date2。您可以使用以下方法来Date1区分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 回答