我有一个文本框,我正在对文本框的模糊事件进行一些验证。我也有按钮。
目前我的文本框显示验证并将焦点设置回来。但我想要的是当我点击按钮时不向我显示消息。
简单来说,我不希望在文本框失去焦点后单击按钮时进行验证
我尝试使用此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
答案 0 :(得分:3)
我只是延迟check1逻辑来检查哪个元素得到了焦点:
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;
}