• ベストアンサー

イベントの発生

2つ質問があります。 1つはフォームがサブミットされた時(onSubmit)、フォームがリセットされた時(onReset)に発生するらしいですが、 どういうことか分かりません。 どのタイミングで発生するのかということと、どいう時に使うのでしょうか? 2つ目はが移動された時に発生する(onMove)ですが、 ウインドウをマウスで移動しても発生しませんでした。 どうしてか分かりませんので、教えて下さい。 よろしく御願いします。

  • lei
  • お礼率13% (18/138)

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

■「onSubmit」イベント ○記述箇所 ・FORMタグ内 ○発生タイミング ・SUBMITボタンが押された時 ・フォーム内のテキストボックス内でEnterキーが押された時(ブラウザ依存) ※「form.submit()」では発生しない。 ○主な利用方法 ・送信時の入力チェック 例:  <FORM … onSubmit="return check()"> のようにしておき、関数check内では「必須項目の入力漏れ」「内容チェック」などを行う。 入力させ直したい場合は、「false」を返すことで、送信をキャンセルできる。 (通常は、alertなどで注意を促す。) ■「onReset」イベント ○記述箇所 ・FORMタグ内 ○発生タイミング ・RESETボタンが押された時 ※IE5/IE6/NN4 では、「form.reset()」を実行した場合にも発生。 ○主な利用方法 ・onSubmit同様、RESETの確認などに使えそうだが、NN6.2を除く多くの主要ブラウザで、form.reset() でもイベントが発生してしまうというバグ(仕様?)のせいで、使い道はまずない。 (false を返せば、リセット動作をキャンセルできる。) ※このブラウザで、onReset で呼び出した関数内で form.reset() を実行すると、その関数が無限に呼び出し続けられることになる。 ・このため通常は、BUTTON の onClick で呼び出した関数内で、form.reset() をする。 ■「onMove」イベント ○記述箇所 ・BODYタグ内 ○発生タイミング ・ウィンドウの左上座標がが変化する時 ※リサイズ時の座標変更も含む。 ○主な利用方法 ・サポートされているのが NN4 のみなので、利用価値なし。

その他の回答 (1)

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

1.フォームがサブミットされるというのは、そのフォームのACTIONに設定したURLにフォームの値を持って遷移する、ということで、submitボタンを押すか、JavaScriptで明示的に指定するかで発生します。リセットも同様で、フォームの内容を初期化する時に発生するイベントです。 ちなみに両者とも、呼び出した関数の返却値にfalseを指定することで本来の動作を無効にすることが出来ます。 用途としては、submitボタンを押下、もしくは別手段でsubmitされたときにフォームに記入されている内容の文字数等の制限事項をチェックする関数を呼び出して、制限に引っかかるようだったらメッセージを出して遷移する処理をやめる、というときに良く使われます。リセットの用途はちょっとわからないですね・・・(スイマセン) 2.onMoveイベントはネットスケープ4以上じゃないとサポートしてません。 それ以下のバージョン、もしくはIEなど他のブラウザでは使えません。

参考URL:
http://tohoho.wakusei.ne.jp/js/index.htm

関連するQ&A

  • イベントが発生しません・・・

    Excel VBAでの質問です。 フォーム上にコントロールはTextBox1つしかありません。 商品コードを入力させ、入力値より商品データを検索、編集させようと思います。 コードを入力しエンターキーを押しても、フォーカスの移動場所が無いためかExitイベントが発生しません。 閉じるボタン[×]でフォームを閉じると、Exitイベントは発生するようです。 入力後はフォームは閉じてもかまいませんが、イベントを発生させることはできるでしょうか。 どなたか教えてください。

  • formのsubmitイベントの発生についての質問です。

    formのsubmitイベントの発生についての質問です。 あるところで、「form.submit() は submit イベントを発火しない」 とあったので、 ↓のscriptで、formのsubmitイベントを調べていました。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>SessionTestNext</title> <style type="text/css"></style> <script type="text/javascript"> function send1(elm){  elm.form.submit(); } function send2(){  document.getElementById("form1").submit(); } if('undefined' !== typeof document.addEventListener){  document.addEventListener('submit', function(event){   var target = event.target;   alert(target.id);  }, false); } else if ('undefined' !== typeof document.attachEvent){  document.attachEvent('onSubmit', function(event){  var target = event.srcElement;  alert(target.id);  }); } </script> </head> <body> <p>SessionTestNext 1 </p> <form id="form1" action="/php/session2.php" method="post" onsubmit="alert('Submited!');return false;"> <input type="text" name="parm2" value="fugafuga"> <input type="submit" value="サブミット"> <button onclick="send1(this)">Javascriptサブミット(1)</button> </form> <button onclick="send2()">Javascriptサブミット(2)</button> </body> </html> だのに、 send1()を実行した時は、イベントが検知され'Submited!'がアラートします。 ただし、onsubmitのハンドラーでfalseを返してるので、サブミットしません。 send2()を実行した時は確かに、submitイベントは発生せず、'Submited!'の アラート無しで、実際サブミットされます。 documentにaddEventListenerで追加したハンドラーの方でも、send1()の 時だけ検知され'form1'がアラートします。  send1()で検知されるのは何故でしょう? また、IEでも同様の動作なんですが、何故か document.attachEvent('onsubmit', の方が、まったく動きません。(タイポかも)

  • フォームが開いただけでCurrentイベントが発生してしまう

    フォームが開いただけでCurrentイベント(レコード移動時)が発生してしまうのですが これを回避する方法はありますか? IF文などを設けるしかないのでしょうか? そもそもフォームを開いただけでカレントレコードが移動してるのでしょうか?

  • マウスイベントが発生しません

    マウスイベントに詳しい方教えて下さい。 Windows上のプログラミングで TImageコンポーネント上でマウスを左クリックさせると、 通常はOnMouseDown→OnClick→OnMouseUpの順で イベントが発生します。 ただ、たまにOnMouseUpイベントが発生せず エラーが発生してしまう事が起こってしまいました。 常に起こるわけではなく、何かのタイミングで起こります。 ただ、何が原因かは全然つかめていません・・・。 OnMouseUpイベントをキャンセルしてしまう 処理って存在するのでしょうか? 特にPeekMessageなどは使用していません。 もし、以上のような事が起こる原因をご存知の方、 お教え願えますか? よろしくお願い致します。

  • VBでクリックイベントを発生させたいです

    VBのことについての質問なんですが 座標を指定してマウスカーソルを自動でクリックさせたり、何秒間か長押しさせたりするイベントの発生のさせ方はどうするんですか? またデスクトップの座標ではなく、フォーム内での座標指定はできますか? 回答よろしくお願いいたします

  • マウスイベントを発生させる方法

    【開発環境】VS2008 Professional 【言語】VisualStudio2008で扱える言語であれば何でも良い。できればC++かC#。 http://okwave.jp/qa/q5915713.html No.5915713の質問をした者です。再びわからないことが出てきたので質問させていただきます。 ゲームパッドでマウス操作するアプリを作成していて、一応は完成しました。 以前の質問でSendInputを使用するというアドバイスをいただき、マウスの移動やクリックを発生させる事は出来ました。 しかし、WindowsVistaのUACで画面が暗転している時や、一部ソフトのインストーラが起動している間、操作が出来なくなってしまいます。 上記の操作不可能状態でもマウス操作以外の操作(ボタン押下時にファイル書き換え等)はできているので、イベントは拾えています。問題はSendInputにあるようです。 言語は現行アプリがC#で出来ているので、できればC#が良いのですが、不可能という事であればマウス移動だけ別アプリに切り分ける事も検討しています。 何か方法をご存知の方がいらっしゃいましたらよろしくお願いします。

  • なぜフォームを開いただけで「レコード移動時」のイベントが発生してしまうのか?

    データシートビューのフォームを開くときに イベントプロシージャーの「レコード移動時」も発生してしまいます。 開いただけでレコードが移動しているのでしょうか? (どこからどこへ?) なんとなく不思議です。 何かわかる方いらっしゃいましたら御回答宜しくお願い致します。

  • コントロールが発生させるイベントを回避したい

    VB2008です。 状態: フォーム上にtextbox1、textbox2、button1があり、textbox1からtextbox2もしくはbutton1にフォーカスが移動したとき 1:textbox2への移動->textbox1のlostfocusイベントを通常通り発生させる。 2:button1への移動->textbox1のlostfocusイベントをキャンセルする。(1度たりとも発生させない、もしくは発生してもその処理を1度たりともさせない。) 1は通常の処理なのでなにもしなくていいと思うのですが、2の処理が上手に浮かびません。button1でフラグを立てて、textbox1_lostfocusの処理を抜けるようにしているのですが、必ず1度は処理が実行されます。 どのようにコードを書けばうまくできるでしょうか。もし、これが仕様ということなら、同じような処理をするにはどうすればよいでしょうか。 わかりにくければ補足いたします。よろしくお願いします。

  • APIイベントを発生させる方法を教えてください。

    自作アプリケーション(WindowsのVB)に、 メールファイルをOutLookソフトからドラッグドロップして、ドラッグドロップのAPIイベントを発生させたいのですが、できずに困っています。 (ちなみに、 OutLookソフトからメールファイルをデスクトップ上へドラッグドロップできます。その、デスクトップ上のメールファイルを、自作アプリケーションへドラッグドロップすると、ドラッグドロップのAPIイベントが発生します。) FormのLoadイベントで、2個のAPI関数を実行しています。 (1)サブクラス化開始    Call SubClass(フォーム名.hwnd) (2)フォームがドロップファイルを受け入れるよう設定    Call DragAcceptFiles(フォーム名.hwnd, True) どなたかアドバイスをお願いします。

  • Struts:サブミット時にJavaScript

    <html:form>タグのonsubmitで任意のJavaScriptを実行できないでしょうか? 例えば <html:form action="aaa" onsubmit="alert('xxx')"> のような感じで。 <html:form>タグのonsubmitは入力チェックでしか使えないのでしょうか? 他の方法でもいいのでStrutsでサブミット時に任意のJavaScriptを実行する方法があれば教えて下さい。

    • ベストアンサー
    • Java

専門家に質問してみよう