Поддельный «клик» для активации метода onclick - PullRequest
46 голосов
/ 07 декабря 2008

У меня есть элемент с методом onclick .

Я хотел бы активировать этот метод (или: искусственный щелчок по этому элементу) в другой функции.

Возможно ли это?

Ответы [ 11 ]

61 голосов
/ 07 декабря 2008

После того, как вы выбрали элемент, вы можете вызвать click ()

document.getElementById('link').click();

см .: https://developer.mozilla.org/En/DOM/Element.click

Я не помню, работает ли это в IE, но должно. У меня нет машины с Windows поблизости.

60 голосов
/ 07 декабря 2008

Если вы используете JQuery, вы можете сделать:

$('#elementid').click();
7 голосов
/ 07 декабря 2008

Я мог бы неправильно истолковать ваш вопрос, но, да, это возможно. Способ, которым я хотел бы сделать это, таков:

var oElement = document.getElementById('elementId');   // get a reference to your element
oElement.onclick = clickHandler; // assign its click function a function reference

function clickHandler() {
    // this function will be called whenever the element is clicked
    // and can also be called from the context of other functions
}

Теперь при каждом нажатии этого элемента будет выполняться код в clickHandler. Точно так же вы можете выполнить тот же код, вызвав функцию из контекста других функций (или даже назначить clickHandler для обработки событий, вызванных другими элементами)>

4 голосов
/ 23 ноября 2012

Если вы используете jQuery, вам нужно использовать функцию .trigger, поэтому она будет выглядеть примерно так:

element.trigger('click');

http://api.jquery.com/trigger/

4 голосов
/ 07 декабря 2008

@ Vilx-

Firefox использует element.dispatchEvent.

Страница содержит образец simulateClick().

3 голосов
/ 07 декабря 2008

Это прекрасный пример того, где вы должны использовать библиотеку javascript, такую ​​как Prototype или JQuery, чтобы абстрагироваться от различий между браузерами.

2 голосов
/ 07 декабря 2008

Для IE существует метод fireEvent () . Не знаю, работает ли это для других браузеров.

2 голосов
/ 07 декабря 2008

просто позвоните "onclick"!

вот пример HTML:

<div id="c" onclick="alert('hello')">Click me!</div>
<div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div>
1 голос
/ 24 сентября 2017

Используя javascript, вы можете активировать click() и focus(), как показано в примере ниже

document.addEventListener("click", function(e) {
  console.log("Clicked On : ",e.toElement);
},true);
document.addEventListener('focus',function(e){
  console.log("Focused On : ",e.srcElement);
},true);

document.querySelector("#button_1").click();
document.querySelector("#input_1").focus();
<input type="button" value="test-button" id="button_1">
<input type="text" value="value 1" id="input_1">
<input type="text" value="value 2" id="input_2">
1 голос
/ 07 декабря 2008

Я не использовал jQuery, но IIRC, первый упомянутый метод не вызывает обработчик onclick.

Я бы вызвал связанный метод onclick напрямую, если вы не используете детали события.

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