JavaScript属性イベントを異なるハンドラー/タイプに転送する
-
07-07-2019 - |
質問
現在、タッチスクリーンコンピューター用のWebページを設定しようとしていますが、(太い指では)オンクリックイベントはトリガーが非常に難しいことに気付きました。 「クリック」しながら移動するには。
使用したい解決策は、onmousedownイベントをonclickに転送することです。どうすればこれを機能させることができますか?
最良の答えは次のようなものです:
<input type="radio" onmousedown="this.onclick()"/>
(ただし、当然のことながら作業状態)
編集:私の特定の例はラジオボタンです。1つがチェックされると、他はチェックされません。ブラウザが無料で提供してくれたときに、この動作をカスタムイベントで再現する必要はありません。
注:編集してフィードバックを受け取ったので、間違った方向に進んでいる可能性があると思います。おそらく「クリック」ではありません。実際に選択を行うラジオボタンの機能:新しい提案を歓迎します...
解決
OK、編集が明確になった後-あなたがしたいのは、 mousedown
イベントが発生したときにユーザーがコントロールをクリックするのをシミュレートすることです。
2つのオプション:
- DOMイベントを起動できます- DOMイベントに関するこのチュートリアルでは、これ(手動でイベントを発生させるセクションを参照); Javascriptイベントの発射も同様の根拠をカバーしています。
-
onmouseout =&quot; this.checked = true;&quot;
を設定します。つまり、ラジオボタンをクリックし、「チェック」/ラジオボタンを選択します。
他のヒント
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);
所属していません StackOverflow