• ベストアンサー

HTMLのフォーム名とJavaScriptの関数名

JavaScriptを勉強し始めたばかりの者です。 submitボタンがonClickされたときにcheckという関数を呼び出しているのですが、 フォーム名とJavaScriptの関数名を同じものにすると、その関数が呼び出されなくなっているようなのです。 ------------------ form.html ----------------------------------------------------- <html> <head> <meta http-equiv="Content-type" content="text/html; charset=euc-jp"> <script type="text/javascript" src="test.js"></script> <link rel="stylesheet" type="text/css" href="style.css"> <title>フォーム</title> </head> <body class="blue" marginwidth="100" topmargin="40" bottommargin="80"> <form name="check" method="post" action="form2.cgi"> <table border="1" cellpadding="7"> <caption>フォーム</caption> <tr> <td>※ID</td> <td><input type="text" name="id"></td> <td>テキストボックス</td> </tr> </table> <br> <input type="submit" name="send" value="送信" onClick="check()"> <input type="reset" name="clear" value="リセット"></td> </form> </body> </html> ------------------ test.js ------------------------------------------------------- <!-- function check() { if( document.check.id.value == "" ){ alert( "※のついている項目は入力必須項目です!" ); } return; } --> ------------------------------------------------------------------------------- 上記のソースで、テキストボックスに何も入力せずに送信ボタンを押してもalertは表示されませんが、 フォーム名あるいは関数名のどちらかをcheck1やcheck_1にすると表示されるようになります。 フォーム名と関数名を同じものにするとalertは表示されません。 フォーム名と関数名の関係はこのようなものなのでしょうか? また上記のソースに原因があるようでしたらお教えください。

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.6

#3です。 >HTMLのフォーム名とJavaScriptの関数名が同じではいけない #5でわかりやすい解説があるのでその通りで。 JavascriptではHTMの要素や属性、関数、変数その他諸々を全て「オブジェクト」として持っています。なので同じ名前のモノが存在するときに省略表記すると思った動作をしなくなります。 なお、#4さんのおっしゃる通り、getElementsByTagNameやgetElementByIdの利用を勧めるべきでした。 >JScript対応ブラウザ~では動かない document.forms等のいわゆるコレクションの出現経緯などはわかりませんが、古くから存在するのでブラウザが互換性を捨てない限り利用できるし、動いてしまうんですけど。 (Jscript以前にNetscape2あたりが勝手に作って他が対応している??)

rhythm96
質問者

お礼

>JavascriptではHTMの要素や属性、関数、変数その他諸々を全て「オブジェクト」として持っています。 この一文でピンときました。 ・JavaScriptがフォーム内容を受け取るとき、それはJavaScriptのオブジェクトとして扱われるから、関数名と同じnameを指定するとJavaScriptが混乱してしまう。 ・できるだけその環境に応じた正式な形で記述することでその混乱は解消される。 という理解で大丈夫だと思うのですが…。 感覚的に、JavaScriptはフォーム内容を「参照」することで値をとっていると思っていたみたいです。 というか書いたソースが省略表記であることすら知らなくて…もっと学習しなくちゃいけませんね(汗)。 HTMLのバージョンやJavaScriptの種類、ブラウザなどによって様々なところで微妙に書き方を変えなければいけないこと。 このことは何となく分かっていましたが、改めて思い知らされた感じです。 「仕事でwebをやっている人はどうやって折り合いをつけているのだろう」と疑問と感心でいっぱいです。 他の皆さんの書き込みも勉強になります。分からない部分もあるので、自分で調べてみようと思います。 本当にありがとうございました。

その他の回答 (7)

回答No.8

あまり難しい事を言っても質問者さんに理解してもらえないと意味がないので、簡単に。。。 仕様です。 同じ名前は使ってはダメです。

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.7

ブラウザ上における HTML のイベント属性内のスコープチェーンは通常とは異なります。下記の場合、 ・<input onsubmit="check();"> スクリプトエンジンは以下の順序で check を探し、最初に見つかったものを返します(HTML5: 5.5.6.1)。 (1). onsubmit 属性内の局所変数(var check)。 (2). input 要素の check プロパティ(this.check) (3). form 要素の check プロパティ(this.form.check) (4). document の check プロパティ(this.form.ownerDocument.check) (5). window の check プロパティ(this.form.ownerDocument.defaultView.check) ここでややこしいのは、HTML の name 属性、id 属性などで名前を付けられた要素が、オブジェクトのプロパティとして「勝手に」露出することがあることです。 ・DOM1-HTML における正式な形は document.forms.namedItem('check').elements.namedItem('send') ですが、 ・ECMAScript では document.forms['check'].elements['send'] と省略することが許されています(DOM2-HTML: D)。 ・さらに、JavaScript 1.0 からの伝統で document['check']['send'] のように書くこともでき(HTML5: 4.10.1)、 ・これは ECMAScript 的に document.check.send と等価です(ECMA262: 11.2.1)。 ・その上、IE は伝統的に名前を持つ要素を window.id のようにグローバル参照でき、 ・それ以外にも非常にややこしいスコープ規則を持っています(参考 URL)。 そういうわけで、私は <input name="input.name"> のようにプロパティとして露出できないような名前を付けておき(よく誤解されていますが、input 要素の name 属性値は CDATA ですから、原則としてどんな文字でも使用できます)、elements['input.name'] を一貫して用いるようにしています。気休め程度ですし、できの悪い IDE なんかでは通用しませんが。 ※なお、IE6 は form 要素に id 属性を付けても document.id の省略形では拾えません。window.id か document.forms['id'] ならば拾えます。いずれにせよ、HTML4 の form 要素には互換性のために name 属性と id 属性を並記することが望ましい(HTML4: 17.3)。XHTML1 では form 要素の name 属性は非推奨です(XHTML1: 4.10)。未だに使う人が後を絶たないので HTML5 では復活します(HTML5: 4.10.1)が、使用を控えることをお勧めします。 ※コア言語としての ECMAScript・JScript と、ホストオブジェクトは区別して下さい。

参考URL:
http://msdn2.microsoft.com/en-us/library/ms533023.aspx#Event_Handler_Scopin
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.5

同じ名称を使うとこういうことが起きるのよ。 山に住んでいるcheckさんと 里に住んでいるcheckさんがいるの。 役場で名前を呼ばれるのよ。 checkさーんって。 どっちを呼んでいるか判らないでしょ? 本来なら ○○に住んでいるcheckさん と呼ばないといけないんだけど それは長いから checkさん と呼ぶだけでブラウザが勝手に解釈してくれるんだけど ○○に住んでいるcheckさん が2つ以上あるとブラウザがどっちを呼んでいいのかわからないから 発生してしまう現象なのよ。

回答No.4

同じ名前はダメです、、、というとほかの方の意見と同じになるので割愛するとして。 > 規則というか、それは仕様的なものとしてそうなっているのでしょうか? HTMLやJavaScriptではなく、JScript(いわゆるIE専用)の仕様です。 もともとのJavaScriptはHTMLドキュメントを操作するために作られた言語ですので、 簡単に要素を示す事ができるように、nameを書くだけでdocument.checkと指定できるようになっています。 JScriptはこれを拡張し、document.all.checkやwindow.checkでもアクセスできるようになっています。 そしてJavaScriptの仕様として、window.checkとグローバル変数のcheckは同じものです。 現在はJScriptがさらに拡張され、<div id="check">にもdocument.all.checkやwindow.checkでアクセスできます。 No.3でwindow.checkとdocument.forms['check']を使い分ければよいと書かれていますが、 JScript対応ブラウザ(IE、Safari3.2以上(3.0以上?)、Opera9.5以上など)では動かないと思います。 ちなみにECMAScriptはdocument.forms['']というものはありませんので DOMのdocument.getElementsByTagName('form')、 上記のはdocument.getElementById('check')を使う事になります。 この問題はHTMLだけでなく、他人が作ったライブラリなども影響します。 <script src="utils.js"></script> などとして、utils.jsの中でfunction check(){}という同じ名前が使われていたら、test.jsのcheck()が使えなくなるかもしれません。 これはルールとして気をつけなければならない事ですね。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

関数呼び出しは window.check() 、 フォームの部品は document.forms['check'].elements['id'].value と、 省略せずに表記すればいいです。 ただし、後者はともかく、前者は普通やらないですし、やはり紛らわしい名前は付けるべきではないかと思います。 name="id" みたいなのも同じ、頻繁に出てくる単語を付けているとわかりずらいバグを産みやすいです。 ついでに、フォームの入力チェックをするときは、submitボタンのonclickは使わないで、formのonsubmitを使ったほうがいいです。 onsubmitで呼び出す関数でfalseを返せば(return false;)、submit動作を止められます。 また、通常のテキスト入力フィールドでEnterキーで送信もできるのでonclickでは入力チェックが動かずに送信されてしまうこともあります。 <form method="post" action="form2.cgi" onsubmit="return myformCheck(this)"> formにnameは要らない onsubmitで入力チェック関数を呼び出す。  引数thisはformオブジェクト。  関数の返値がfalseならsubmit中止 test.js ※ 外部ファイル化しているなら前後のHTMLコメント表現(<!-- -->)は不要 function myformCheck(F) { if( F.elements['id'].value == "" ){ alert( "※のついている項目は入力必須項目です!" ); return false; } return true; }

rhythm96
質問者

補足

回答ありがとうございます。 「onClick」や外部ファイルのコメントもソースを書きながら引っかかっていたのですが、そういうことだったのですね。 「this」でフォーム内容を渡せるというのも初めて知りました。勉強になります。 ただ、HTMLのフォーム名とJavaScriptの関数名が同じではいけないというのがどうしても不思議なんですが、やはり仕様なのでしょうか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

そもそもの運用方法がよくない。 formにnameをつけるという時点で今風ではない。 idで管理しましょう。 また、inputのnameに制限はないとはいえ、「id」のような一般的な 予約語を使うのはトラブルの元です。できればやめた方がよいでしょう。 (一応以下のような方法で動きますが・・・) それとバリデートしたあとに、falseを返さないとそのまま進んじゃい ますので、フローに注意したほうがよいです <script> function check(){ if( document.getElementById("check").elements["id"].value == "" ){ alert( "※のついている項目は入力必須項目です!" ); return false; } return true; } </script> <form id="check" method="post" action="form2.cgi"> <p> <input type="text" name="id"> <input type="submit" name="send" value="送信" onClick="return check()"> <input type="reset" name="clear" value="リセット"> </p> </form>

rhythm96
質問者

補足

回答ありがとうございます。 JavaScriptに関しては独学で始めたばかりなので、yambejpさんのご指摘は勉強になることが多くて本当にありがたいです。 idはHTMLの予約語なのですね。こちらも久しぶりに触っているので忘れてしまっているようです。 書いてくださったソースコードで私のやりたいことはほとんど説明されているのですが、 それとは別に、なぜ同じ名前では関数が呼び出せないのか気になっているのです。 ご存知であればお教えください。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

その通り。 JavaScriptの関数・変数を含めて 同じnameやidをつけてダメよ。

rhythm96
質問者

補足

回答ありがとうございます。 フォームのidやnameについてはまだよく分かっていないので、 もう少しwebを利用して違いなどを勉強したいと思います。 関数名、変数名、id、nameが重複するものを使用してはいけないというのはわかるのですが、 HTMLのフォーム名とJavaScriptの関数名は関係ないもののように思えたので 同じ名前を使用しても問題ないのではと考えました。 しかしそうではないみたいで…。 規則というか、それは仕様的なものとしてそうなっているのでしょうか?

関連するQ&A

  • フォームのname値を配列にしてJavaScriptでフォームのチェックをする方法

    JavaScriptでフォームの半角数字のチェックをしたいのですが、 form内容をCGI(PHP)に渡すためname値を配列にしないといけないのですが、 以下のスクリプトだとエラーが出てしまいます。 *実際はif(isNaN~)と<input~>をループで書き出しており、行数が不特定なので それぞれ別のname値を使うことができない状態です。 <script language="JavaScript"> function check() { if(isNaN(document.form1.hoge[0].value)){ alert("値は半角数字で入力してください。"); return(false); } if(isNaN(document.form1.hoge[1].value)){ alert("値は半角数字で入力してください。"); return(false); } return(true); } </script> <form method="post" action="xxx.cgi" onSubmit="return check()" name="form1"> <input type="text" name="hoge[0]"> <input type="text" name="hoge[1]"> </form> 特にCGIに渡す必要がなければ <input type="text" name="hoge"> <input type="text" name="hoge"> としてやればチェックができるのですが、どうしても次の 処理があるためname値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。

  • javascript フォームについて

    javascriptでフォームを作ったのですが、複数フォームの空白をチェックするにはどのようなプログラムにすればよろしいでしょうか? onsubmit="return chk1(this)でフォーム送信が押されたときにチェックを行おうと考えているのですが そのときのchk()の中身やif文の条件がわからないのです。 どのようにすれば上手くいくでしょうか? 回答よろしくお願いします。 ソースは以下のとおりです。 <script language="javascript"> function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } function chk1(frm){ if(frm.elements["txt1"].value==""){ alert("解答欄に空白があります"); /* FALSEを返してフォームは送信しない */ return false; }else{ /* TRUEを返してフォーム送信 */ return true; } } </script> <form name="nform" method="POST" action="mailto:webmaster@a.com?subject=問い合せ" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="mailto:webmaster@leposystems.com?subject=問い合せ" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="mailto:webmaster@leposystems.com?subject=問い合せ" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()" onsubmit="return chk1(this)">

  • JavaScriptのロジック?

    <HTML> <HEAD> <TITLE>JavaScript</TITLE> <SCRIPT type="text/javascript"> <!-- /* 同じ値を二重表示 */ function funDouble(){ alert( document.SampleForm.nameOne.value ); document.SampleForm.nameTwe.value = document.SampleForm.nameOne.value + document.SampleForm.nameOne.value; alert(document.SampleForm.nameTwe.value); } // --> </SCRIPT> </HEAD> <BODY> <form name="SampleForm" method="POST"> <table align="center"> <TR> <TD>OnClick機能 : <Input type="text" name="nameOne" value="Ok"><Input type="submit" value="押して!" onclick="funDouble()" ></TD> <TD>| 結果 => | </TD> <TD> OnChange後 同じ値を2重表示 ; <Input type="text" name="nameTwe" value="123456"></TD> </TR> </table> </form> </BODY> </HTML>

  • JavaScriptを使った計算フォーム

    JavaScriptを使った計算フォームで質問です。 人数をテキストボックスに入力し、そのあと項目を選ぶと計算がされるようにしたいのですが ラジオボタンが持っているvalueを取り出せません。 下記の「←------???」と書いてあるところを何とかすれば完成だと思うのですが、 どなたか教えていただけないでしょうか? <script language="JavaScript" type="text/JavaScript"> function sjLeft(source,length) { if (source.length < length) { return (""); } return source.substr(0, length); } function sjReplace(source,start,length,target) { sjlen = source.length; if ((start > sjlen) || (start < 0)) { return String(""); } return String(sjLeft(source,start ) + target + source.substr(start+length, sjlen)); } function sjInsert( source, start, target) { return sjReplace(source,start,0,target); } function fcheck(obj) { s1_2value = ??? * new Number(document.form1.n1.value); ←------??? document.form1.s1_2.value = String(s1_2value); document.form1.total.value = s1_2value; return true; } </script> <form name="form1" method="POST"> <table width="400" border="1"> <tr> <td>人数</td> <td></td> <td><input type=text name=n1 size=8 onChange="fcheck(this);">人</td> <td></td> </tr> <tr> td><input name="n2" type="radio" value="13000" onChange="fcheck(this);">食事A</td> <td>\13,000</td> <td>×人数</td> <td><input name=s1_2 type=text size=8 readonly>円</td> </tr> <tr> <td colspan="2">&nbsp;</td> <td>総計</td> <td><input type=text readonly name=total size=10>円</td> </tr> </table> </form>

  • javascriptの記述方法について

    こんにちわ。 今、以下のような記述で、kei1~kei5までの合計をtotalに出そうと考えましたが、 function allcalc(){}内に書く記述で困っています。 form名を分けているのは、別の関数で各行の小計(kei1~5)を出すために分けてみましたが、あまり意味がなさそうで一つのform名に変更しようかとも思っています。 <HTML> <HEAD> <TITLE>Test</TITLE> <SCRIPT type="text/javascript"> <!-- function allcalc(total){ var al_total = 0; for (i=1; i <= 10; i++){ elementkei="total.form[" + i +"].element[2].value" if(elementkei != "") {al_total += elementkei} } document.form6.total.value = al_total; } //--> </SCRIPT> </HEAD><BODY><TABLE><FORM name="form1"> <TR><TD><INPUT type="text" name="baika1"></TD> <TD><INPUT type="text" name="suryou1"></TD> <TD><INPUT type="text" name="kei1"></TD> </FORM> <FORM name="form2"> <TR><TD><INPUT type="text" name="baika2"></TD> <TD><INPUT type="text" name="suryou2"></TD> <TD><INPUT type="text" name="kei2"></TD> </FORM> ・・・・・・・・・・・・・これが5つあります <FORM name="form6"> <TR><TD>合計</TD> <TD><INPUT type="text" name="total"> <TD><INPUT type="button" name="go" value="合計計算" OnClick="allcalc(document)"></TD> </FORM></TABLE></BODY></HTML> これを動作させてみると、「total.form[がNullかオブジェクトではありません」とエラーが流れます。 恐らく、allcalcの引数とその参照の仕方が悪いと思うのですが、 書き方を変えてみても、同じようなエラーで止まってしまいます。 どなたか方法を教えていただけないでしょうか。

  • javascriptでのアラート表示

    javascriptで大変困っております。 ラジオボタン・テキストエリアにまたがったチェックアラートをだしたいのですが、うまくいきません。 <script> function form_check(f) { if (f.Q1.value == "") { alert("・未記入です!"); return false; } ・ ・ ・ if (f.Q6.value == "") { alert("・名前が未記入です!"); return false; } else return true; } function reset_conf() { if (confirm("フォーム内容をリセットします!\n\nよろしいですか?")) return true; else return false; } </script> -------- <FORM ACTION="hogehoge.cgi" METHOD="POST" onSubmit="return form_check(this)"> 教育:<INPUT TYPE="radio" NAME="Q1" VALUE="OK"> テスト:<INPUT TYPE="radio" NAME="Q2" VALUE="OK">  アンケート:<INPUT TYPE="radio" NAME="Q3" VALUE="OK"> AAA:<input name="Q4" type="text" /> BBB:<input name="Q5" type="text" /> CCC:<input name="Q6" type="text" /> <INPUT TYPE="hidden" NAME="number" VALUE="6"> <INPUT TYPE="submit" NAME="answer" VALUE="送信する"> <INPUT TYPE="reset" NAME="reset" VALUE="リセット"> </FORM> </form> ------- テキストエリアのアラートチェックは出来ない状態です。 すべてにチェックまたは、テキスト入力がされていないと送信できないようにしたいのです。 どうしたらよいでしょうか?

  • formのtextフィールドが認識されない

    下記のようなフォームに対し、JavaScriptで処理を行おうとしています。 <form name="dateForm" method="post" action=""> <table> <tr><td>0</td> <td><input type='text' name='date[]' maxlength='8' size=12 value='20111001'></td> <td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr> <tr><td>1</td> <td><input type='text' name='date[]' maxlength='8' size=12 value='20111002'></td> <td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr> <tr><td>2</td> <td><input type='text' name='date[]' maxlength='8' size=12 value='20111003'></td> <td><input type='text' name='date2[]' maxlength='8' size=12 value=''></td></tr> </table> <input type='text' name='date_0' maxlength='8' size=12 value='20111000'><br><br> <input type="submit" name="button" value="Check" onClick="send_self();"> <input type="submit" name="button" value="Enter" onClick="set_action();"> </form> Checkボタン押下で上記の関数を呼び出し、テキストフィールドdate[0]の値を表示すると、(1)では「20111001」と正しい値が表示されますが、(2)では下記のエラーが出てしまいます。 「プロパティ '0' の値を取得できません: オブジェクトは Null または未定義です。」 また、 alert(document.dateForm.elements[0]); // … (3) alert(document.dateForm.date); // … (4) とすると、(3)では[object]、(4)では[undefined]と表示されます。 alert(document.dateForm.date_0.value); はvalueも正しく表示されobjectとしても正しく認識されるので、配列へのアクセスに問題があるように思うのですが…。 問題点と解決法をご存知の方がいらっしゃいましたら、どうぞよろしくお願い致します。m(_ _;)m

  • javascriptによる計算

    テキストボックス「a1~6」の値とテキストボックス「b1~6」に入力された値を足し算してテキストボックス「c1~6」(例…c[i] = a[i] + b[i])を計算するJavaScriptを作成しているのですが、結果がundefinedになってしまい上手くいきません。どうやったら動くのかどうかご教授ください。 以下ソース↓ <script language ="JavaScript"> function plus() { var intResult = 0; for (i=1; i<=6; i++){ intResult[i] = 0; if (!isNaN(document.forms["A"].all["a"+i].value) && !isNaN(document.forms["B"].all["b"+i].value)){ intResult[i] += parseInt(document.forms["A"].all["a"+i].value); intResult[i] += parseInt(document.forms["B"].all["b"+i].value); } <table border = 1> <tr> <td> <table border = 1> <tr> <td> <form name="A"> <input type = "text" size = 5 name = "a1"></input> </td> <td> <input type = "text" size = 5 name = "a2"></input> </td> <td> <input type = "text" size = 5 name = "a3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a4"></input> </td> <td> <input type = "text" size = 5 name = "a5"></input> </td> <td> <input type = "text" size = 5 name = "a6"></input> </form> </td> </tr> </table> </td> <td> <table boeder = 1> <tr> <input type = "button" onClick="plus()" value = "+"></input> </tr> </table> </td> <td> <table border = 1> <tr> <td> <form name = "B"> <input type = "text" size = 5 name = "b1"></input> </td> <td> <input type = "text" size = 5 name = "b2"></input> </td> <td> <input type = "text" size = 5 name = "b3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b4"></input> </td> <td> <input type = "text" size = 5 name = "b5"></input> </td> <td> <input type = "text" size = 5 name = "b6"></input> </form> </td> </tr> </table> </td> </tr> </table> 答え <form name = "C"> <table border = 1> <tr> <td> <input type = "text" size = 5 name = "c1"></input> </td> <td> <input type = "text" size = 5 name = "c2"></input> </td> <td> <input type = "text" size = 5 name = "c3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c4"></input> </td> <td> <input type = "text" size = 5 name = "c5"></input> </td> <td> <input type = "text" size = 5 name = "c6"></input> </td> </tr> </table> </form> </body> document.C.all["c"+i].value = intResult[i]; } } </script>

  • フォームの動作についてお願いします!

    <FORM NAME="form1"> <INPUT NAME="text1" TYPE="text"> <INPUT TYPE="button" value="表示" onclick="daialog()"> </FORM> <script language="JavaScript"> <!-- function daialog(){  alert(form1.text1.value) ; } --> </script> ----------------------------------- と上のようにテキストボックスの中身をアラートで返すスクリプトが あるのですが、検索ページ(google等)のようにボタンを押さずとも、 エンターキーを押せばdaialog()が呼びだされるようにするには どうすればいいでしょうか。。。 <FORM>に関係がありそうなのでJavaScriptのカテゴリにじゃないかも しれませんが、どなたかよろしくお願いします!!

  • フォームからsubmitをした後再読込させない

    ほぼ初心者でフォームからの申込みを作っています 現在 <form name="a11" action="/products/detail.php" method="post" > <input type="hidden" name="mode" value="cart" /> <input type="hidden" name="product_id" value="137" /> <input type="hidden" name="product_class_id" value="634" /> <input type="checkbox" name="quantity" value="1" /><br /> <input type="submit" value="受講する" onClick="alert('カゴに入れました');value='受講する'" /> </form> というフォームが数十個あるのですが、 一つチェックボックスにチェックを入れて送信するとページの再読み込みがされて チェックボックスのチェックが消えてしまいます どのチェックボックスにチェックを入れたかは残したまま、次のsubmitを押させたいのです 申込み者がどのフォームにチェックを入れて送信をしたかを見れるようにして 次のページに飛ばしたいのです どうかご教授願います HTMLの項目で質問させていただきましたが、JavaScriptのプログラム例など 併せてご教授いただけますと助かります どうぞよろしくお願いいたします

専門家に質問してみよう