preventDefaultで、ドラッグ&ドロップやsubmitを止めることができる。
もっと良い活用はないかと模索していたが、自分が考えてるように動作しなかった。
SAMPLE
・preventDefaultの説明
「イベントがキャンセル可能である場合、イベントのさらなる伝播 (propagation) を止めずに、そのイベントをキャンセルします。」
「イベントのプログラムは動くが、デフォルトのイベント動作はしませんよ。」と解釈しているのですが。。デフォルトを解除するには以下のようなソースとなります。
document.forms['testForm'].elements['testCheckbox'].onclick = function(evt){
evt = evt || window.event;
evt.preventDefault();
}
●各種INPUTの動作の結果
・formのsubmitを解除
以下で動作が止まりました。もう1行追加が必要です。
evt = evt || window.event;
evt.preventDefault();
evt.returnValue = false;
・ラジオボタン、チェックボタン
狙い通り、選択の変更ができなくなります。
ただし、画面遷移時、パラメータは渡ります。
・テキスト
keydownのイベント登録で変更不能になりますが、入力補完機能で入力値の変更が可能。
onclickを登録してもダメでした。
・セレクトボックス
全く機能しなかった。optionにまでイベント登録を試してみたけど無駄でした。
●まとめ
inputによる振る舞いがかなり違ってくるので、有効活用するのは難しいかも。
以下の使用に限定するのが良いかもしれない。
・submitキャンセル
・HTML5のドラッグ&ドロップの明示的なキャンセル指定
※参考文献
Mozilla Developer Networkの
event.preventDefault - MDNPR