2

ユーザーが HTML5 カレンダー要素の日付をクリックしたときに JavaScript 関数を実行できるようにする必要があります。を使用してみonchangeましたが、ユーザーが日付を入力したときにも起動します。

<input type="date" onchange="alert('fired');"/>

彼らが「完全な」日付を入力するまでイベントは発生しないようです。これはきちんとしていますが、私のニーズを満たしていません。

カレンダーで日付がクリックされたときにのみ起動する方法はありますか? それとも、両方のシナリオで発砲し、どちらのタイプのアクションであったかを検出するのでしょうか?

4

1 に答える 1

0

ユーザーがマウスで有効な日付のみを選択できるように、キーボード入力を無効にしたいと考えています。

また、カレンダー内のクリックも検出したいと考えています。

そのために、私は答えのこの更新されたデモを持っています:

無効な日付のクリックに対して、クリック ハンドラーが空の文字列値を持つことに注意してください。

InputDatePreventKeyboard

HTML 属性でイベント ハンドラーを記述することはお勧めできません。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/eval#Use_functions_instead_of_evaluating_snippets_of_codeを参照して ください

デモの更新されたコードは次のとおりです。

<input type="date"
    onchange="alert(window.event.type+' event handler for '+this.type+' noticed  \''+this.value+'\'');"
    onclick="alert(window.event.type+ ' event handler for '+this.type+ ' noticed  \''+this.value+'\'');"
    onkeydown="window.event.preventDefault();
alert(window.event.type+' event handler for '+this.type+' prevents keyboard input for value \''+this.value+'\'');"
    onkeypress="window.event.preventDefault();
alert(window.event.type+' event handler for '+this.type+' prevents keyboard input for value \''+this.value+'\'');"
    oninput="alert(window.event.type+' event handler for '+this.type+' noticed \''+this.value+'\'');" />
于 2013-05-21T18:39:28.173 に答える