Как отключить обработчик щелчков на узле YUI? - PullRequest
0 голосов
/ 02 октября 2009

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

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

    var clickFunction = function(e, radio, p){
        var checked = radio.get("checked");
        radio.set("checked", !checked);
    };
    this.controlNode = Y.Node.create("<input id='" + id + "' onclick='function(e){return false;}' type='radio' name='" + parent.id + "'>");
    this.label = Y.Node.create("<label for='" + id + "'>" + display + "</label>");
    Y.on("mousedown", clickFunction, this.label, this.controlNode, parent.controlNode);
    parent.controlNode.appendChild(this.controlNode);
    parent.controlNode.appendChild(this.label);

Используется обработчик события mousedown, так как он предназначен для жирных пальцев на сенсорном экране (windows), а перемещение между mousedown и mouseup не является щелчком. (При касании пальцем палец будет увеличивать и уменьшать площадь своей поверхности на экране, а на экране без мультитач курсор будет наведен на среднее значение точек контакта. Небольшой поворот приведет к перемещению курсора).

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

Я просто хочу отменить; и я думаю, что наличие другого варианта сброса менее чем удовлетворительно для моего конкретного использования. Если здесь не произойдет ничего другого, мне придется это использовать.

1 Ответ

2 голосов
/ 03 октября 2009

Попробуйте метод halt на фасаде события, переданном в ваш обработчик события:

this.controlNode = Y.Node.create("<input id='" + id + "' type='radio' name='" + parent.id + "'>");
this.controlNode.on("click", function(e) { e.halt(); });

Это остановит распространение события и поведение события по умолчанию (щелчок).

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