JavaScript 속성 이벤트를 다른 핸들러/유형으로 전달합니다
-
07-07-2019 - |
문제
나는 현재 터치 스크린 컴퓨터를위한 웹 페이지를 설정하려고 노력하고 있으며, 내 손가락의 표면적이 일반적으로 커서가 움직이게되므로 on 클릭 이벤트가 실제로 트리거하기가 어렵다는 것을 알았습니다. 나는 "클릭"입니다.
내가 사용하고 싶은 솔루션은 OnMousEdown 이벤트를 OnClick으로 전달하는 것입니다. 이 작업을 어떻게 만들 수 있습니까?
가장 좋은 대답은 다음과 같은 선입니다.
<input type="radio" onmousedown="this.onclick()"/>
(그러나 물론 작업 조건에 있습니다)
편집 : 내 구체적인 예는 라디오 버튼에 대한 것입니다 - 하나가 확인되면 다른 하나는 선택되지 않은 것입니다. 브라우저가 무료로 제공 할 때 사용자 정의 이벤트 에서이 동작을 복제하고 싶지 않습니다.
참고 : 편집하고 피드백을받은 후, 아마도 내가 잘못된 트랙에 있을지도 모른다고 생각합니다 ... 아마도 실제로 선택을하는 라디오 버튼의 "클릭"기능이 아닐 수도 있습니다. 새로운 제안을 환영합니다 ...
해결책
자, 편집 후 명확 해집니다. 원하는 것은 사용자가 mousedown
이벤트가 해고되었습니다.
두 가지 옵션 :
- DOM 이벤트를 해고 할 수 있습니다. DOM 이벤트에 대한이 튜토리얼 이것에 대해 토론하십시오 (참조 수동으로 발사 이벤트 부분); 자바 스크립트 이벤트 발사 비슷한 땅을 덮습니다.
- 세트
onmouseout="this.checked = true;"
, 즉 라디오 버튼을 클릭하는 버튼 "Checks"/라디오 버튼을 선택합니다.
다른 팁
그냥 다루지 않겠습니까? 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);