проверьте, имеет ли кнопка фокус

0

У меня есть текстовое поле, и я выполняю проверку на размытие текстового поля. У меня также есть кнопка.

В настоящее время мое текстовое поле показывает валидацию и возвращает фокус. Но я хочу, чтобы не показывать мне сообщение, когда я нажимаю кнопку.

Простыми словами я не хочу, чтобы валидация была нажата, когда текстовое поле теряет фокус

Я попытался проверить, имеет ли кнопка фокус, используя этот 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);

здесь есть скрипка

Теги:
knockout.js

1 ответ

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;
}
  • 0
    но теперь я не получаю уведомление, когда я покидаю текстовое поле
  • 0
    Проверьте в jsfiddle, я получаю двойное duplicate name not allowed при выходе из текстового поля и не сфокусировано на кнопке, протестировано на Chrome. Разве это не то, что вы ожидаете?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню