У меня есть текстовое поле, и я выполняю проверку на размытие текстового поля. У меня также есть кнопка.
В настоящее время мое текстовое поле показывает валидацию и возвращает фокус. Но я хочу, чтобы не показывать мне сообщение, когда я нажимаю кнопку.
Простыми словами я не хочу, чтобы валидация была нажата, когда текстовое поле теряет фокус
Я попытался проверить, имеет ли кнопка фокус, используя этот document.activeelement
но который возвращает мне тело
вот мой html
<input id="txtName" data-bind ="event: { blur: $root.check1 }" />
<button id="btnSubmit" class="btn" data-bind="click: check2" > Submit </button>
вот моя модель
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);
здесь есть скрипка
Я просто задержу логику 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;
}
duplicate name not allowed
при выходе из текстового поля и не сфокусировано на кнопке, протестировано на Chrome. Разве это не то, что вы ожидаете?