質問

現在、タッチスクリーンコンピューター用のWebページを設定しようとしていますが、(太い指では)オンクリックイベントはトリガーが非常に難しいことに気付きました。 「クリック」しながら移動するには。

使用したい解決策は、onmousedownイベントをonclickに転送することです。どうすればこれを機能させることができますか?

最良の答えは次のようなものです:

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

(ただし、当然のことながら作業状態)

編集:私の特定の例はラジオボタンです。1つがチェックされると、他はチェックされません。ブラウザが無料で提供してくれたときに、この動作をカスタムイベントで再現する必要はありません。

注:編集してフィードバックを受け取ったので、間違った方向に進んでいる可能性があると思います。おそらく「クリック」ではありません。実際に選択を行うラジオボタンの機能:新しい提案を歓迎します...

役に立ちましたか?

解決

OK、編集が明確になった後-あなたがしたいのは、 mousedown イベントが発生したときにユーザーがコントロールをクリックするのをシミュレートすることです。

2つのオプション:

  1. DOMイベントを起動できます- DOMイベントに関するこのチュートリアルでは、これ(手動でイベントを発生させるセクションを参照); Javascriptイベントの発射も同様の根拠をカバーしています。
  2. 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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top