Передать значение в функцию размытия, используя нокаут
У меня есть 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();
};
Для этой функции я хочу передать фактическое значение текстового поля на потерянном фокусе. Моя проблема в том, что я не знаю, какое значение передать этой функции.
Как я могу этого достичь?
2 ответа
Решение
Это очень легко сделать так
data-bind="value:Date1, event: { blur: ValidateData.bind($data,Date1) }"
И ваша функция
this.ValidateDate = function (myval) {
// your code
};
Если вы добавите параметр, нокаут пройдет current model value
наблюдаемым. В вашем случае это пройдет parent
из Date1
а также Date2
, Вы можете использовать следующие для дифференциации 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 предоставит текущее значение модели в качестве первого параметра.