Javascript не выполняет событие onclick - PullRequest
4 голосов
/ 31 декабря 2011

У меня есть несколько простых функций JavaScript:

function focus(id)
{
    var e = document.getElementById(id);
    if (e != null)
    {
        e.focus();
    }
}

function show(id)
{
    var e = document.getElementById(id);
    if (e != null)
    {
        e.style.display = "inline";
    }
}

У меня есть html-тег с событием onclick.

<a title="Click This" onclick="focus('some_textbox'); show('some_panel');">Click This</a>

Когда я нажимаю ссылку «Нажми это», выполняется только метод show (). По какой-то причине метод фокусировки никогда не вызывается. Есть идеи, почему это происходит?

Я попытался очистить кэш и изменил порядок методов focus () и show (). Я также проверил, что все написано правильно.

Это потому, что focus () уже является функцией в javascript?

Редактировать: я попытался переименовать функцию в focus2, и теперь она работает. Очень странно. Кто-нибудь знает, почему это происходит?

Ответы [ 2 ]

3 голосов
/ 31 декабря 2011

Вероятно, это , вызывающий метод "focus", но происходит то, что действие по умолчанию тега <a> возвращает его обратно. Попробуйте это:

function focus(id)
{
    var e = document.getElementById(id);
    if (e != null)
    {
       setTimeout(function() { e.focus(); }, 1);
    }
}

Запустив вызов "focus" в отдельном цикле событий, вы можете убедиться, что ваш элемент захватывает фокус после завершения обработки "click".

0 голосов
/ 31 декабря 2011

Похоже, у вас возникла проблема с переименованием.

Просто переименуйте функцию focus в focusX или что-то другое, это работает для меня в моем тестовом примере.

Не забудьтеобновить вызов до focus в href, до focusX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...