0

当输入获得焦点时,如果输入无效,我想弹出警告。消息在 observable 中。

所以给定这段代码,我如何找到绑定到它的 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));
        ...

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

控制台截图

带下划线的 observable 是我所追求的。

EDIT2:我正在像这样解决它:

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

2 回答 2

1

您可以使用:

ko.dataFor(this)

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

有关更多详细信息,请查看此处: 使用不显眼的事件处理程序

于 2013-10-04T07:30:16.047 回答
0

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

于 2013-10-04T20:00:51.493 回答