检查按钮是否有焦点

时间:2013-12-17 15:17:31

标签: jquery html knockout.js

我有一个文本框,我正在对文本框的模糊事件进行一些验证。我也有按钮。

目前我的文本框显示验证并将焦点设置回来。但我想要的是当我点击按钮时不向我显示消息。

简单来说,我不希望在文本框失去焦点后单击按钮时进行验证

我尝试使用此document.activeelement检查按钮是否具有焦点,但这会返回我的身体

这是我的HTML

<input id="txtName" data-bind ="event: { blur: $root.check1 }" />
<button  id="btnSubmit" class="btn"  data-bind="click: check2" > Submit </button>

这是我的viewmodel

var viewModel = {

 };


viewModel.check1 = function(){
    alert("duplicate name not allowed");
     $("[id$=txtName]").focus();
                    return;
}

viewModel.check2 = function(){
    alert("alert from button click");
}

ko.applyBindings(viewModel);

这里是Fiddle

1 个答案:

答案 0 :(得分:3)

我只是延迟check1逻辑来检查哪个元素得到了焦点:

DEMO

viewModel.check1 = function (e) {
    $("[id$=txtName]").dequeue().delay(0).queue(function () {
        if(document.activeElement === $('#btnSubmit')[0]) return;
        alert("duplicate name not allowed");
        $(this).focus();
    });
    return;
}