Пересылка событий атрибутов javascript другому обработчику / типу

StackOverflow https://stackoverflow.com/questions/1432755

Вопрос

В настоящее время я пытаюсь настроить веб-страницу для компьютера с сенсорным экраном, и заметил, что (своими толстыми пальцами) события onclick действительно трудно вызвать, так как площадь поверхности моего пальца обычно вызывает курсор двигаться, пока я "нажимаю".

Решение, которое я хочу использовать, - пересылка событий onmousedown в onclick. Как я могу сделать эту работу?

Лучший ответ будет следующим:

<input type="radio" onmousedown="this.onclick()"/>

(но, конечно, в рабочем состоянии)

РЕДАКТИРОВАТЬ: Мой конкретный пример для переключателей - когда один отмечен, другие не отмечены; Я не хочу повторять это поведение в произвольном событии, когда браузер дает его мне бесплатно.

ПРИМЕЧАНИЕ. После редактирования и получения обратной связи я думаю, что, возможно, я ошибся: возможно, это не " нажмите " функция на переключателе, которая фактически делает выбор: приветствуются новые предложения ...

Это было полезно?

Решение

Хорошо, после ваших изменений все становится более понятным - вам нужно смоделировать пользователя, нажимающего на элемент управления, когда происходит событие mousedown .

Два варианта:

<Ол>
  • Вы можете запустить событие DOM - это руководство по событиям DOM обсуждает это (см. раздел Запуск событий вручную ); Запуск событий Javascript охватывает аналогичные вопросы.
  • Установите onmouseout = < this.checked = true; " , т. е. щелкнув переключатель "флажки" / выбирает переключатель.
  • Другие советы

    Почему бы просто не обработать событие mousedown ?

    Я знаю, что вы не упомянули об этом в вопросе, но если бы вы использовали jQuery, это было бы действительно очень просто:

    $().live('mousedown', function() { this.click(); });
    

    Может быть, это работает для вас

    document.getElementById("yourinput").onmousedown = function() {
       this.click();
    }
    

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

    Лучше иметь одну функцию для обработки обоих событий, например

    .
    var function = foo(e) {
       ...
    };
    
    <input onclick="foo();" onmousedown="foo();"/>
    

    Лучше все же использовать ненавязчивый JavaScript, например, (если вы использовали YUI):

    <input id="input-el"/>
    
    var function = foo(e) {
       ...
    };
    
    var Event = YAHOO.util.Event;
    
    Event.on('input-el', 'click', foo);
    Event.on('input-el', 'mousedown', foo);
    
    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top