デフォルトのイベントを防止するonMousedownイベントハンドラとonMouseupイベントハンドラがドキュメント上にあります。javacriptのドキュメントでデフォルトアクションが防止されている場合、単一の要素でデフォルトイベントを使用します。
これで、デフォルトのアクションを使用する単一のフォーム要素(選択フィールド)があります。私は何とかjavascriptから呼び出すことはできますか?
のような何か:
<select ... onClick="this.browserDefaultAction">
もちろんの「BrowserDefaultAction」dosn't存在する - 私は私が探しているかを説明するためにそれを作りました。
EDIT:
が多少明確にする -
I日数(colums)と時間(5分単位で行を)を表すテーブルを有します。ユーザーがマウスをテーブルの上に移動すると、各セルにはそのセルが表す時間が表示されます。
マウスの左ボタンを押すと、時間は「設定」(セルは青色)になります。マウスの右ボタンを押すと、時間は「設定なし」(セルは緑色になります)。これは "移動中"に起こらなければならない。 e。すべてのセルを別々にクリックする必要はありません。イベントスクリプトで直接マウスボタンの状態を読み込むよう
はうまく動作しませんでした、私は、カスタム変数にマウス・ボタンを保存するためのコードのこの部分を追加しました:
var Maustaste = 0;
function Tastendruck (Ereignis) {
if (!Ereignis)
Ereignis = window.event;
if (Ereignis.buttons)
{
if (Ereignis.buttons == 2) {Maustaste=2}
if (Ereignis.buttons == 1) {Maustaste=1}
}
}
function Tastenlos() {
Maustaste = 0;
}
document.onmousedown = Tastendruck;
document.onmouseup = Tastenlos;
それは今のところうまくいったとえデフォルトの動作を妨げなくても。
しかし、ボタンを押したままマウスを動かすと、と表示され、と表示されます。これは機能には影響しませんでしたが、ユーザにとっては醜く邪魔になりました。そこで、関数の最後にEreignis.preventDefaultを追加しました。
これまでのところ、良いですが、同じページにこの選択フィールドが残っています。 onmouseup/downイベントハンドラをドキュメントに貼り付けようとしましたが、テーブル内のテーブルを持つdivコンテナに貼り付けようとしましたが、うまく動作しませんでした。
I誰もがここでは、ページまたは完全なコードを見たいadress.
EDIT:私はイベントをトリガどの要素アプローチ
テストを使用して、(prevemtDefauktを使用
)または 適切でない
...
if (!Ereignis)
Ereignis = window.event;
if (Ereignis.target.tagName != "SELECT")
{
if (Ereignis.buttons)
それは今woksです。
おそらく機能を再度追加するのではなく、オリジナルのグローバル 'preventDefault'からその単一の要素を除外する方が簡単だろう。 – DBS
イベントをトリガーした要素をテストし、 'prevemtDefaukt()'を使うか、適切でないかをテストすることができます。しかし、あなたが実際に言うことができるだけのデフォルトのアクションの防止に対応するJavaScriptを見ずに。便利なヘルプが必要な場合は、「MCVE」([mcve])コードを表示してください。あるいは、フォーム要素の場合、 'change'イベントに代わって応答することができます。 –
まず、あなたのthougtsのおかげで。 実際には、すでに400行以上のスクリプトがあり、問題を理解するために必要な部分だけを抽出すること自体に問題があります。私が試してみます。 –