нажмите () несколько раз - PullRequest
3 голосов
/ 11 августа 2010

Я использую document.getElementById ("val"). Click (), чтобы вызвать событие click, но оно продолжает срабатывать несколько раз.

Здесь я добавляю eventHandler

try {
    //add mousedown event handler to navigation buttons
    addEventHandler(oPrevArrow, "mousedown", handlePrevDayClick);
    addEventHandler(oNextArrow, "mousedown", handleNextDayClick);
    addEventHandler(oLogout, "mousedown", handleLogoutClick);
} 
catch (err) {
}

В событии щелчка я выполняю «автоматический щелчок»

function handleNextDayClick(e) {
    e = e || window.event;
    stopEvent(e);
    document.getElementById("btn_nextday").click();
}

Мне нужна помощь, чтобы выяснить, что заставляет его звонить несколько раз и возможное исправление.

NB. При нажатии кнопки, вызываемой автоматически, вызывается метод в коде ASP.NET

.

Ответы [ 3 ]

2 голосов
/ 11 августа 2010

Обычно, когда событие запускается несколько раз, это происходит из-за того, что событие присоединено к элементу более одного раза, или элемент, по которому вы выбираете автоматически, является дочерним по отношению к другому элементу с тем же вложенным событием. Проверьте, обернуты ли они друг другом, и если да, то вам нужно будет определить, что текущая цель равна цели, чтобы убедиться, что это происходит только один раз. Или вы можете остановить распространение события.

1 голос
/ 11 августа 2010

попробуйте соединить его с JQuery:

 $(document).ready(function() {
    $('#oPrevArrow').click(function() {
        $('#btn_prevday').trigger('click');
    });
    $('#oNextArrow').click(function() {
        $('#btn_nextday').trigger('click');
    });
    $('#oLogout').click(function() {
        $('#btn_logout').trigger('click');
    });
 });

Это может быть еще более кратким, в зависимости от того, как ваши стрелки и кнопки расположены в DOM.Потенциально это может быть одна строка jQuery.

Что-то вроде:

 $(document).ready(function() {
    $('.arrow').click(function() { //note css class selector
        $('this + button').trigger('click');
    });
 });
0 голосов
/ 10 октября 2013

Это происходит из-за того, что конкретное событие связано несколько раз с одним и тем же элементом.

Решение, которое сработало для меня:

Убить все присоединенные события, используя метод .die().

А затем присоедините прослушиватель вашего метода.

Таким образом,

$('.arrow').click(function() {
// FUNCTION BODY HERE
}

должно быть:

$('.arrow').die("click")
$('.arrow').click(function() {
// FUNCTION BODY HERE
}
...