• 締切済み

Javascript onsubmit記述方法

サイト制作をしているのですが、行き詰った箇所を教えてください。 form内でEnterキーを押したときに送信ページに飛んでしまわずに、次項目へ行くように(Tabの役割)するJavascriptと、確認用メールアドレスの項目を作るためのJavascriptを併用したいのですが、 onsubmitに"return CheckForm(this);"と"javascript:pageTracker._linkByPost(this)"を並列させる必要があるようなのですが、書き方を教えてください。 もし、そもそもの記述が間違っていたらご指摘ください。 ---- Javascript部分 <script type="text/javascript"> /*********************************************** * Disable "Enter" key in Form script- * By Nurul Fadilah(nurul@REMOVETHISvolmedia.com) ***********************************************/ function handleEnter (field, event) { var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; if (keyCode == 13) { var i; for (i = 0; i < field.form.elements.length; i++) if (field == field.form.elements[i]) break; i = (i + 1) % field.form.elements.length; field.form.elements[i].focus(); return false; } else return true; } </script> <script language="JavaScript" type="text/javascript"> function CheckForm(theform) { var FormOK = false; if (theform.mailaddress.value == "") { FieldControl(theform.To, "「メールアドレス」を入力してください。"); }else if (theform.mailaddresscheck.value != theform.email1.value ) { FieldControl(theform.To, "「メールアドレス(確認用)」を入力してください。"); }else if (theform.mailaddresscheck.value != theform.email1.value ) { FieldControl(theform.To, "入力されたものが一致するように入力してください。"); }else { FormOK = true; } return FormOK; } function FieldControl(element, message) { alert(message); } </script> ------- HTML部分(現状"Enter" key in Formのみ実装) <form action="" method="post" onSubmit="javascript:pageTracker._linkByPost(this)"> <table class="contact"> <tr> <th>メールアドレス <span class="red">※</span></th> <td><input type="text" name="mailaddress" id="textfield" class="type01" onkeypress="return handleEnter(this, event)" /></td> </tr> <tr> <th>メールアドレス確認用 <span class="red">※</span></th> <td><input type="text" name="mailaddresscheck" id="textfield" class="type01" onkeypress="return handleEnter(this, event)" /></td> </tr>

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

回答がないみたいなので… >form内でEnterキーを押したときに送信ページに飛んでしまわずに、次項目へ行くように >(Tabの役割)するJavascriptと、確認用メールアドレスの項目を作るためのJavascriptを >併用したいのですが、 多分、 ・Enterキーを押したときに次項目へ行くようにする == handleEnter() と思われますが、 ・「確認用メールアドレスの項目を作る」はどれなんでしょうか? ご提示のコードには、CheckForm()というのがあるけれど、こちらは空入力や入力値のチェックを行なうもののようで、項目を作るものではないようです。 確認用メールアドレスの項目ってこれのことでしょうか、それとも名前しかないので内容が不明なpageTracker._linkByPost()のことなのか、あるいはこれらとは別のものなのかわかりかねます。 (↑)のご質問内容通りであるのなら、イベント発生のタイミングが違うので問題なく併用できると思います。 ご提示のHTMLでhandleEnter()とpageTracker._linkByPost()を使い分けていますが、pageTracker._linkByPost()ところに「確認用~」の呼び出しを入れてあげればよいです。(pageTracker._linkByPost()が「確認用~」であるのなら現状のままで動作するはずです) 「確認用~」がCheckForm()のことで、これとpageTracker._linkByPost()(←何の処理なのか不明ですが)をサブミット時に処理したいのなら、処理手順の順序で呼出せば続けて実行するはず。  CheckForm(this); pageTracker._linkByPost(this); みたいに。 ただし、CheckForm(this);は戻り値でsubmitのキャンセルを制御しているように見受けられますが、このあたりをどのようにしたいのかがわりません。 (そもそも、このformはサーバーに送信するものなのかもわかりませんし…) 処理の制御をどうしたいのかによって、記述方法が変わってきます。 例えば、  if(CheckForm(this)) pageTracker._linkByPost(this); とか… 制御が複雑なら、HTML内からは先(後)に行なう処理だけを記述しておいて、そちらのfunction内で流れを制御してもよろしいかと。 例えば、pageTracker._linkByPost(f)の最初で   CheckForm(f); を呼出して、戻り値に応じて処理を変えるとか… 制御用のfunctionを別に作ってHTMLからはそちらを呼出し、CheckForm()やpageTracker._linkByPost()はそのfunctionから必要に応じて呼出すというのでもよろしいかと。 ご質問の意味がわかりかねますので、想像を交えた回答なのではずれているかも。

関連するQ&A

専門家に質問してみよう