• ベストアンサー

自動フォーム入力について

JavaScriptに関して質問させてください。 Webブラウザのフォーム関連です。 テキスト入力フォームに文字を入力すると、 別のテキスト入力フォームにも同じ文字が入るスクリプトを作ってます。 var autoin=document.setting.basename.value;  ↑まずbasenameと言うnameのvalue値をautoinに代入。 if (document.forms[0].gaitou){document.forms[0].id.value=autoin;}  ↑nameがgaitouに該当するフォームオブジェクトのvalueにautoinの値を入れる。 この時にnameがgaitou 尚かつ「inputtypeがhidden以外」である事を条件に入れたいのです。 言い換えるとhiddenの場合はnameが該当しても実行されないようにしたいと言う事です。 何か良い方法はないでしょうか。 複数の方法を教示頂けると嬉しいです。 どうか宜しくお願い致します。

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ フォームオブジェクトをfとすると、fが存在するかどうかは、     if(f)   で判断する。 ・ 「フォーム要素のタイプがのhidden以外」という判断はtypeプロパティによる。 でよいと思います。 これをどのように使おうとされているのか分かりませんが、例えば >>> if (document.forms[0].gaitou){document.forms[0].id.value=autoin;} >>>  ↑nameがgaitouに該当するフォームオブジェクトのvalueにautoinの値を入れる。 が、フォーム名がgaitouで、その要素idがhiddenでないときと解釈する場合、 if (document.forms['gaitou'] && document.forms['gaitou'].id && document.forms['gaitou'].id.type != 'hidden') {document.forms['gaitou'].id.value=autoin;} の様な形となります。

nerumako
質問者

お礼

typeプロパティと言う物があったのですね。勉強になりました。 いかんせんJavaScript初心者なもので、 非常に初歩的な質問にも関わらずお答え頂き誠にありがとうございました。 実に明解なご回答でした。

関連するQ&A

  • フォームチェックで変数は使えませんか?

    いろいろなフォームに対応する汎用チェックスクリプトを 書いているのですが、 strName = strcChecks[i]; var a = document.forms[0].strName.value;                ▲               この部分 ・・・・の名前指定の際、変数が使えないのでしょうか。 たくさん入力するテキストボックスやらチェック ボックスがあって一つ一つ、document.forms・・・ と書くのが手間なので何か方法があれば・・・

  • hiddenフォームのvalueを自動生成したいのですが...

    JavaScriptで生成した値を、同じページの中にあるinput type=hiddenフォームのvalueの値として使用したいのですが、うまく行きません。 普通のinputタグであれば、 <SCRIPT Language="JavaScript"> <!-- function SetOrderId() { myDate = new Date(); Year = new String(myDate.getFullYear()); Month = new String(myDate.getMonth()+1); Day = new String(myDate.getDate()); if ( Day.length == 1 ) Day = "0" + Day; document.forms[0].OrderId.value = Year + "-" + Month + "-" + Day } //--> </SCRIPT> <BODY onLoad="SetOrderId()"> <INPUT NAME="OrderId" TYPE="TEXT" onClick="SetOrderId()"> で、ページを開いたときにOrderIdフォームに値が代入されているのですが、 <input type=hidden name="OrderId"> としたときには、上記のスクリプトで生成した値がinput type=hiddenのvalueに設定されず、困っています。 どうすればinput type=hiddenのvalueの値にJavaScriptで生成した値を代入できるのでしょうか?

  • 入力フォームについて(1)

    仕事で使う、履歴作成ツールを作っています。 知識ゼロの状態から色々調べて、ある程度自分で作ったのですが、 いくつか、どうしても分からない部分がありますので、 ご教授頂けますでしょうか。 1.選択項目は全てプルダウンで作っているが、ラジオボタンも作りたい 2.このフォームだと、選択した文字列が入力フォームに反映される際、   文字列の1文字目に勝手に半角スペースが入ってしまうので入らないようにしたい   (“一次受:麻生”を選択すると、入力フォームに“ 一次受:麻生”と入ってしまう) 3.選択項目を選び直した際、折角入力した文字列が消えないようにするため、   文字入力のためのスペース、項目の文字列が入るスペース、   右上に“TIME”ボタンを押した時間が入るスペースと分けている。   可能であれば、一つのフォームに纏めたい。 作成したフォームはこちらです。 ------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>履歴</title> <style type="text/css"> <!-- p {line-height:10.40;} pre {line-height:1.1;} input#text{width:200px;height:50px;} --> </style> <script language="javascript"> <!-- window.document.onkeydown = function (e) { if (e != undefined) { if (e.keyCode == 116) { e.stopPropagation(); e.preventDefault(); e.keyCode = null; return false; } } else { if (event.keyCode == 116) { event.keyCode = null; return false; } } } --> <!-- var tid; function ShowTime() { var dtNowLocal = new Date; var dtNow = new Date; var strMon; var strDay; var strHour; var strMinutes; var strMoto; strMoto = document.forms["abc"].elements["time"].value if(strMoto != ""){ strMoto = strMoto + "\n"; } dtNow.setTime(dtNowLocal.getTime() + (dtNowLocal.getTimezoneOffset() + 540) * 60 * 1000); strMon = dtNow.getMonth()+1; strDay = dtNow.getDate(); strHour = dtNow.getHours(); strMinutes = dtNow.getMinutes(); if (strMon < 10) { strMon = "0" + strMon; } if (strDay < 10) { strDay = "0" + strDay; } if (strHour < 10) { strHour = "0" + strHour; } if (strMinutes < 10) { strMinutes = "0" + strMinutes; } document.forms["abc"].elements["time"].value=strMoto +strHour+":"+strMinutes+" - "; document.forms["abc"].elements["time"].focus(); } --> </script> <script type="text/javascript"> function viewText() { var text = clipboardData.getData("text"); if (text != null) { alert(text); } else { alert(""); } } </script> <script language="javascript"> function copyText() { var text = document.getElementById("text").value; clipboardData.setData("Text", text); alert(""); } </script> </head> <body> <form action="#" name="abc"> <table><tr> <td rowspan="5"> <textarea cols="90" rows="35" id="inputform" name="inputform">【ご要望】 【対応概要】 2012/05/ 対応者:伊藤博文</textarea><br> <textarea cols="90" rows="10" id="textform" name="textform"></textarea> </td> <td style="border-top:ridge;border-left:ridge;border-right:ridge;border-bottom:ridge;" colspan="3" align="center" width="300px" height="70px"> <input tipe="text" size="25" id="time" name="time"> <input type="button" value="TIME" onClick="ShowTime()" > </td></tr> <tr><td width="10px"></td> <td width="65px" height="50px"> <br><b>一次受</b> </td> <td> <br><select onchange="p()" name="se"> <option value="" title="" selected></option> <option value="一次受:菅直人" title="shimoda">菅</option> <option value="一次受:麻生太郎" title="uto">麻生</option> </select> </td></tr> <td colspan="3" align="center" height="5px"> <hr> </td></tr> <tr><td width="10px"></td> <td height="30px"> <b>入電者</b> </td> <td> <select onchange="p()" name="se"> <option value="" title="" selected></option> <option value="入電者:本人" title="">本人</option> <option value="入電者:配偶者さま" title="">配偶者</option> <option value="入電者:外" title="">その他</option> </select> </td></tr> <tr><td> </td></tr> </tr></table> </form> <script type="text/javascript"> function p() { var se = document.forms[ 'abc' ].elements[ 'se' ]; var cnt = 0; var obj; var txt = ''; while( obj = se[ cnt++ ] ) txt += '\n ' + obj.value; obj = document.forms[ 'abc' ].elements[ 'textform' ]; obj.value = obj.defaultValue + txt; } </script> </body> </html> ------------------------------------------- 口頭では分かり辛い部分が多々あるかと思いますので、 不明点がございましたらご指摘ください。 また、「こうした方がより使いやすい・今後編集しやすい」 と云う部分がございましたら、ご提案くださると嬉しいです。 なお、このサイトの質問投稿の文字制限の関係上載せ切れなかった、 このフォームの改良についての質問も別途投稿しております。 入力フォームについて(2) というタイトルです。 可能でしたらこちらもご覧ください。 どうぞ宜しくお願いいたします。

  • フォームの要素同士の足し算

    こんにちは。フォームの要素同士の足し算をJavascriptで行おうとしているのですが、要素を文字列と解釈するらしく、うまく演算ができません。。。。 function calcTOTAL(){ var a=10; var b=20; var c=a+b; // この場合は30で演算もOK var sub0; var sub1; if(isNaN(document.forms[0].elements['aaa'].value)){ sub0=0; }else{ sub0 = document.forms[0].elements['aaa'].value; } if(isNaN(document.forms[0].elements['bbb'].value)){ sub1=0; }else{ sub1 = document.forms[0].elements['bbb'].value; } var c=sub0+sub1; // これは文字列同士になってしまう。。。 } どちらも数字でなければ 0 が入って 0+0になるはずなのですが 結果は 00 になってしまいます。 どのように修正したら 数字同士の演算ができるようになるのでしょうか?

  • 初歩的な文字入力フォームの添削をお願いします

    文字入力を複数のページで共有するために 入力された文字列を変数に代入して 外部化したスクリプトから書き出そうと試行錯誤しています。 以下のコードでは、同じページにスクリプトがある場合には正常に作動しますが 一旦、スクリプトを外部化すると、全く作動しません。 同じスクリプトを使用する必要はありませんので、  ・スクリプトを外部化する方法と、  ・同じ文字列の色だけを出力先で変更する方法の 2点を教えて下さい。 <script type="text/javascript" > function textout(outputId, formName, itemName) { var text3 = document.forms[formName].elements[itemName].value; document.getElementById(outputId).textContent = text3; } </script> <form name="form3"> <INPUT size="15" type="text" name="in3"> <input type="button" onClick="textout('Disp3','form3','in3')" value="Show Me" > </form> <div id="Disp3"> </div>

    • ベストアンサー
    • HTML
  • javascriptでのフォーム自動入力について質問です。

    javascriptでのフォーム自動入力について質問です。 プログラム超初心者ですがよろしくお願いします。 ブックマークレットを使ってフォームの自動入力をしたいと思っているのですが、 まず、新規(別)のページから自動入力したいURLに移動して、読み込みが完了したら IDとPASWSWORDを自動入力したいと思っています。 自動入力したいURLを手動で表示してからだと以下のスクリプトでうまくいったのですが・・ javascript:(function (){document.forms[0].CRSRED.value='ID';document.forms[0].CRSBLU.value='PASSWORD';document.forms[0].submit();})(); スクリプトの中にURLを記述して自動でページ移動してから入力する方法がわかりませんでした。 良い方法がありましたら教えていただきたいです。よろしくお願いいたします。 移動したいページは下のページです。 https://contents.nifty.com/member/service/g-way/meijinsen_month/pay/index.html

  • JavaScript制御のフォームを1ページに複数設置するには?

    先日こちらのサイトで、1つのセレクトボックスで1度に複数の情報をCGIに渡す方法を教えて頂き、 <script type="text/javascript"> <!-- function func() { var n = document.F1.S1.selectedIndex; var d = document.F1.S1.options[n].text.split(" "); document.H1.AA1.value=d[1].slice(0,-1); document.H1.AA2.value=d[0]; document.H1.AA3.value=document.F1.T1.value; document.H1.submit(); } // --> </script> <form name="F1" action="#"> <select name="S1"> <option>3本セット 100円 <option>7本セット 200円 </select> <input type="button" value="カートへ" onclick="func()"> </form> <form name="H1" action="cart.cgi"> <input type="hidden" name="AA1">  ・  ・ <input type="hidden" name="AA3"> </form> というフォームを作ったのですが、同じページに同様のフォームがもう一つ必要になりました。 そこで上記ソースに、フォーム名や変数名を変えたScript <script type="text/javascript"> <!-- function func() { var n = document.F2.S2.selectedIndex; var d = document.F2.S2.options[n].text.split(" "); document.H2.AA4.value=d[1].slice(0,-1); document.H2.AA5.value=d[0]; document.H2.AA6.value=document.F2.T2.value; document.H2.submit(); } // --> </script> を追加し、 これに対応するフォームも追加したのですが、1つめのフォームから「カートへ」でデータを送っても2つめのフォームの内容が送信されてしまいます。 どこをどう直したらよいのでしょうか?

  • 他フォームの入力データの引継ぎ

    入力フォームを2つ用意し 第1フォームの入力欄の1部を第2フォームの入力欄のデータとして submitさせたいのですが <INPUT TYPE="radio">と<SELECT>の入力値がうまく引継げません。 下記のようなJavaスクリプトとHTMLなのですが Javaスクリプトで「value」を=にすると 「radio」のほうはundefin、 「SELECT」で複数選択した場合は、一つ目の選択肢のみしか 引継げませんでした。 Javaスクリプトでうまくいく方法がありましたら ご教示ください。 ----Javaスクリプト-------------------------------- function aaa() { document.FROM2.A.value = document.FROM1.A.value; document.FROM2.B.value = document.FROM1.B.value; document.FROM2.C.value = document.FROM1.C.value; document.FROM2.submit(); } ----HTML-------------------------------- <FORM NAME="FROM1" METHOD="POST" ACTION="***"> <SELECT NAME="A" MULTIPLE> <OPTION VALUE="aa">セレクトa <OPTION VALUE="bb">セレクトb <OPTION VALUE="cc">セレクトc <OPTION VALUE="dd">セレクトd </SELECT> <INPUT TYPE="radio" NAME="B" VALUE="" CHECKED>選択なし <INPUT TYPE="radio" NAME="B" VALUE="1" CHECKED>ラジオ1 <INPUT TYPE="radio" NAME="B" VALUE="2" CHECKED>ラジオ2 <INPUT TYPE="text" NAME="C"> <INPUT TYPE="text" NAME="D"> <INPUT TYPE="submit" NAME="OK_BTN" VALUE="OK"> </FORM> <FORM NAME="FROM2" METHOD="POST" ACTION="***"> <INPUT TYPE="hidden" NAME="A"> <INPUT TYPE="hidden" NAME="B"> <INPUT TYPE="hidden" NAME="C"> <INPUT type="button" onClick="JavaScript:aaa();" name="OK_BTN" value="OK"> </FORM>

  • フォームの表示が消えてしまう・・・

    初歩的なことでつまづいております。 フォームを利用して「入力」フォームに文字を入れ、「入力!」ボタンを押すと「結果」フォームにその文字を表示させたいのですがうまくいきません。 やりたいことは、 1.「入力」フォームに文字を入れます(たとえば"123") 2.「入力!」ボタンを押します 3.すると「結果」フォームに"123"と表示させたいです  4.また、「入力」フォームにはそのまま"123"が表示されたままにしたいです なぜか下記の記述だとボタンを押した瞬間にすべてのフォームの文字表示が消えてしまいます。 これはどうしてなのでしょうか?すみませんがよろしくお願いします。 <HTML> <HEAD> <TITLE></TITLE> <SCRIPT LANGUAGE="JavaScript"><!-- function calcButton() { var inputValue = document.calc.input.value; document.calc.result.value = inputValue; } //--></SCRIPT> </HEAD> <BODY> <FORM name="calc" action=""> 入力<INPUT type="text" size="5" name="input"><BR> 結果<INPUT type="text" size="5" name="result"><BR> <INPUT type="submit" value="入力!" onClick="calcButton()"> </FORM> </BODY></HTML>

  • テキストフォームの未入力チェック

    お世話になります。 Javascriptでテキストフォームの入力チェックを行っております。 テキストフォームにはDBから取得した値が入っており、その値を変更して更新できるプログラムを作ろうとしています。 テキストフォームが未入力だった場合に元の値を入れてPOSTリクエストを投げたいのですが方法が分かりません。 (よく見かける未入力だったらアラートを出すというのは出来るのですが・・・) 以下ソースの抜粋になります。 function check(){ for(i=0; i<document.iform1.length;i++){ if(document.form1.elements[i].value==""){ document.iform1.elements[i].valueに元の値を入れたい。 } } <form name="form1" action="updata.php" method="POST"> <input type="button" name ="save" value="更新" onClick="check()"> </form> 以上、ご教示よろしくお願いいたします。

専門家に質問してみよう