从输入字段中查找observable

时间:2013-10-04 07:10:23

标签: javascript knockout.js knockout-validation

当输入获得焦点时,如果输入无效,我想弹出警告。 消息在可观察的内容中。

所以给定这段代码,我如何找到与它绑定的observable。

$(document).on("focus", "input.invalid", function(){
        console.log("ahaaaa!");
        //your code here
        //dig out observable from this and find the message
        //create element with class invalid-message and place it next to this
    }).on("blur", function(){
        $(".invalid-message").remove();
    });

我正在使用敲除验证,我只想在字段具有焦点时显示错误消息。欢迎提出其他建议。

编辑: 当我使用dataFor时:

    $(document).on("focus", "input.invalid", function(){
        console.log(this);
        console.log(ko.dataFor(this));
        ...

我在控制台中得到了这个:

Console screenshot

带下划线的观察是我追求的。

EDIT2: 我正在解决这个问题:

    $(document).on("focus", "input.invalid", function(){
        var fieldName = $(this).attr("name");
        var errorMessage = ko.dataFor(this)[fieldName].error;
        ...

2 个答案:

答案 0 :(得分:1)

您可以使用:

ko.dataFor(this)

将为您提供当前元素的可观察性。

有关详细信息,请查看此处: Using unobtrusive event handlers

答案 1 :(得分:0)

为什么不简单地使用Knockout的event绑定来设置focusblur的处理程序?将使用输入值作为第一个参数调用您的处理程序;无需使用jQuery。