フォーム操作の方法について

このQ&Aのポイント
  • PHPを使用してフォームを作成し、特定の条件に応じて入力を制限する方法を知りたいです。
  • フォームにはテキスト入力とチェックボックスがあり、最初はどちらも選択されていない状態で表示されます。
  • チェックボックスにチェックが入ればテキスト入力ができなくなり、テキスト入力があればチェックボックスにチェックを入れられない状態にしたいです。
回答を見る
  • ベストアンサー

フォームの操作について

phpでフォームをつくっているのですが条件につき入力できない 状態にしたいと思っているのですが方法がわかりません。 htmlは <input type="text" name="stock" value="" /> 個 <label><input type="checkbox" name="stock_unlimited[]" value="0" />無制限</label> となっており希望としては最初はどちらも選択していない状態で 表示されcheckboxにチェックされたらinputを入力できない状態にし その逆にinputに入力されていたらチェックボックスにチェック できない状態にしたいのですがどうやれば可能なのでしょうか? javascriptについては全くわからないもので詳しい方がおりましたら できるだけわかりやすく教えて頂けますと幸いです。 宜しくお願い致します。

  • dcx147
  • お礼率33% (214/636)

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

  • ベストアンサー
  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.2

onchange内のを関数内に入れる。 ただし、thisだけ置き換える必要があります。 function hoge() { // idがstockの要素を取得 var elemStock = document.getElementById("stock"); // idがstock_unlimitedの要素を取得 var elemStockUnlimited = document.getElementById("stock_unlimited"); // テキストが入力されている場合 if (elemStock.value.length > 0) { // 要素を入力できなくする elemStockUnlimited.disabled = true; // テキストが入力されていない場合 } else { // 要素を入力できるようにする elemStockUnlimited.disabled = false; } } みたいな感じで。

その他の回答 (1)

  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.1

<input id="stock" name="stock" type="text" value="" onchange=" // idがstock_unlimitedの要素を取得 var elem = document.getElementById('stock_unlimited'); // テキストが入力されている場合 if (this.value.length > 0) { // 要素を入力できなくする elem.disabled = true; // テキストが入力されていない場合 } else { // 要素を入力できるようにする elem.disabled = false; } " />個 <input id="stock_unlimited" name="stock_unlimited[]" type="checkbox" value="0" onchange=" // idがstockの要素を取得 var elem = document.getElementById('stock'); // チェック状態の場合 if (this.checked) { // 要素を入力できなくする elem.disabled = true; } else { // 要素を入力できるようにする elem.disabled = false; } " /><label for="stock_unlimited">無制限</label> #細かい検証してませんのでボロがあるかもしれません・・・

dcx147
質問者

お礼

早速のお返事ありがとうございます。 htmlの表示はsmartyのtplを使っておりまして組み込み方が どうもわかりません。^^; htmlの表示側は <input id="stock" name="stock" type="text" value="" onchange="hoge()" />個 のようにしてheader間か外部jsにして適応させるようにしたいの ですがどのようにすれば可能でしょうか? 大変お手数お掛け致しますが宜しくお願い致します。

関連するQ&A

  • 選択肢によって入力必須が変わるフォームの入力チェックJavaScrip

    選択肢によって入力必須が変わるフォームの入力チェックJavaScript フォームの入力チェックのJavaScriptを作成しています。 特定のラジオボタンにチェックを入れた場合のみ、 入力必須になるテキストボックスの 入力チェックJavaScriptを教えてください。 ラジオボタンが複数あるフォームで、 <input type="radio" name="type" value="type1" /> <label>タイプ1</label> <input type="radio" name="type" value="type2" /> <label>タイプ2</label> タイプ2を選んだ場合のみ、必須項目にしたいテキストボックスがあります。 <input type="text" name="name1" /> テキストボックスが空白だった場合にアラートを出すJavaScriptは 現在このようになっています。 (参考にしていたサイトがあるのですが、忘れてしまいました・・・。) $(function(){ $("form1").submit(function(){ if($("input[name='name1']").val()==""){ $("input[name='name1']").css("border","1px solid #A70F00"); alert('必須項目に未入力があります'); return false; }) }) このJavaScriptをさらに、if文で括って、 name="type" の value が type2 であれば・・・、という処理を追加すればよいのだと 思いますが、書き方が分からず困っています。 どうかよろしくお願いします。

  • PHP更新フォーム チェックボックス

    入力フォームにて、チェックボックスがあり、チェック送信すると"済"という文字をDBに格納します。 <input type='checkbox' name='check' value='済'> DBに済が格納されていたら、更新フォームのチェックボックスに、チェックが入ってる状態に したのですが、どのようにしたら良いでしょうか? <input type="text" name="checkbox" value="<?php print( $row->checkbox); ?>"> のようにしてもうまくいきません。 ご教授おねがいします。

    • 締切済み
    • PHP
  • フォームの制御について

    下記2つのJavaScriptについて正しい記述方法について、 どうすれば良いかを模索しています。 アドバイスを頂ければ幸いです。 どうぞ何卒よろしくお願い致します。 1.チェックボックスの値とテキストフォームの値を結合する方法 <!-- C02の中から選択されているものを取得// --> for ( var i = 0; i < checkbox02.length; i ++ ) { if ( checkbox02[i].checked === true ) { text += checkbox02[i] + text01. value; text += '\n';}} 2.テキストエリアの値がNullの時に値が出力されないようにする方法 <!-- textarea01の中から選択されているものを取得// --> text += '回答3:' + textarea01 + '\n'; ソース: ----------------------------------------------------------------------------------------- <head> <title>アンケートフォーム</title> <script type="text/javascript">  <!-- 値の加工用// --> function textoutput() { <!-- フォームを変数に// --> var formObj = document.form01; <!-- checkbox01を取得// --> var checkbox01 = formObj.C01; <!-- checkbox02を取得// --> var checkbox02 = formObj.C02; <!-- text01.valueを取得// --> var text01 = formObj.text01.value; <!-- textarea01.valueを取得// --> var textarea01 = formObj.textarea01.value; <!-- textを結合用の変数として準備// --> <!-- チェックボックスの中から選択されているものを取得// --> var text = 'アンケート結果' + '\n'; <!-- C01の中から選択されているものを取得// --> for ( var i = 0; i < checkbox01.length; i ++ ) { if ( checkbox01[i].checked === true ) { text += checkbox01[i]. value; text += '\n';}} <!-- C02の中から選択されているものを取得// --> for ( var i = 0; i < checkbox02.length; i ++ ) { if ( checkbox02[i].checked === true ) { text += checkbox02[i] + text01. value; text += '\n';}} <!-- textarea01の中から選択されているものを取得// --> text += '回答3:' + textarea01 + '\n'; <!-- output.valueにtextを反映(最後に改行コード)// formObj.output.value = text + '\n'; } </script> </head> <body> <strong>アンケートフォーム</strong><br /><br /> <form name="form01"> <!--チェックボックスC01// --> <strong>・回答結果</strong><br /> <table border="0" > <td colspan="2" valign="middle"width="560"> <input type="checkbox" name="C01" value=" →回答1" id="checkbox 1-1" > <label for="checkbox 1-1">回答1</label> <input type="checkbox" name="C01" value=" →回答2" id="checkbox 1-2" > <label for="checkbox 1-2">回答2</label> </td> <tr> <!--チェックボックスC02// --> <td width="86" valign="middle"> <input type="checkbox" name="C02" value=" →その他:" id="checkbox 1-1" > <label for="checkbox 1-1">その他:</label> </td> <td valign="middle"> <input type="text "name="text01" size="60" /><br> </td> </table> <strong>・回答3:</strong><br /> <textarea name="textarea01" cols="60" rows="1" " tabindex="1" STYLE="ime-mode:active"></textarea><br> <!--結果出力// --> 結果出力<br> <input type="button" value="ログ出力" onClick="textoutput();"> <input type="reset" value="リセット" onclick="return confirm('リセットボタンがクリックされました。本当に入力内容を削除してもよろしいですか?');" /><br> <input type="button" name="Copy" value="クリップボードにコピー" onClick="CopyText('output');"><br> <textarea name="output" id="output" cols="60" rows="10"></textarea><br> </form> </body> </html>

  • チェック出来る数を制限&チェックされない場合0

    【チェックボックスにチェック出来る数を制限しながら、チェックされない場合には0を入力する】ということが希望です。 それぞれを分離させた場合は、下記で可能でした。 この2つを同時に満たす方法が分かりません。 ご教授頂きたくお願いいたします。 【チェックボックスにチェック出来る数を制限する方法】 <SCRIPT language="JavaScript"> <!-- // チェックボックスに使用している名前 chn = new Array("ch1","ch2","ch3","ch4","ch5"); chc = 3; // チェックできる数 // チェックボックスにチェックできる数を制限する function chBx(cn){ cnt = 0; for(i=0; i<chn.length; i++) { if(document.form1.elements[chn[i]].checked) cnt++; } if(cnt > chc) { alert("チェックできる項目は" + chc + "個までです"); document.form1.elements[cn].checked = false; } } //--> </SCRIPT> <input type="checkbox" name="ch1" value="2" onClick="chBx('ch1')"> <label for="type1">1</label> <BR> <input type="checkbox" name="ch2" value="2" onClick="chBx('ch2')"> <label for="type1">2</label> <BR> <input type="checkbox" name="ch3" value="3" onClick="chBx('ch3')"> <label for="type1">3</label> <BR> <input type="checkbox" name="ch4" value="4" onClick="chBx('ch4')"> <label for="type1">4</label> <BR> <input type="checkbox" name="ch5" value="5" onClick="chBx('ch5')"> <label for="type1">5</label> <BR> 【チェックボックスがチェックされない場合に0を入力する】   <input type="hidden" name="ch1" value="0">   <input type="checkbox" onclick="this.form.ch1.value=this.checked ? 1 : 0">   <input type="hidden" name="ch2" value="0">   <input type="checkbox" onclick="this.form.ch2.value=this.checked ? 1 : 0">   <input type="hidden" name="ch3" value="0">   <input type="checkbox" onclick="this.form.ch3.value=this.checked ? 1 : 0">   <input type="hidden" name="ch4" value="0">   <input type="checkbox" onclick="this.form.ch4.value=this.checked ? 1 : 0">   <input type="hidden" name="ch5" value="0">   <input type="checkbox" onclick="this.form.ch5.value=this.checked ? 1 : 0"> 上記を同時に満たしたいというのが今回の質問の趣旨です。

  • VB6でWEBのラジオボタンの操作方法がわかりません

    始めまして、VB初心者です。 VB6でWEBのラジオボタンの操作方法が解りません。 以下のようなHTMLのWEBページがあります。 ラジオボタンをVB6にて操作(チェック)したいのですがどうしても出来ません。 テキスト入力の項目には入力できました。 IE.Document.All("test").Value = "テスト" 上記にてテストと入力できました。 HTMLソース <table> <tr> <td>選択してください </td> <td colSpan="2"><!-- <select name="j_type"> <option value="10">A</option> <option value="11">B</option> <option value="20">C</option> <option value="30">D</option> <option value="40">E</option> <option value="50">F</option> <option value="99">G</option> </select> <label><input type="checkbox" value="10" name="jArr[]">A</label>&nbsp; <label><input type="checkbox" value="11" name="jArr[]">B</label>&nbsp; <label><input type="checkbox" value="20" name="jArr[]">C</label>&nbsp; <label><input type="checkbox" value="30" name="jArr[]">D</label>&nbsp; <label><input type="checkbox" value="40" name="jArr[]">E</label>&nbsp; <label><input type="checkbox" value="50" name="jArr[]">F</label>&nbsp; <label><input type="checkbox" value="99" name="jArr[]">G</label>&nbsp;<br> </td> </table> </table> <p> </p> <table> <tr> <td>選択しましたか?</td> <td><label><input type="radio" CHECKED value="0" name="c_exp">はい</label> <label><input type="radio" value="1" name="c_exp">いいえ</label></td> </table> 自分で作った(ホームページ作成ソフト)WEBにVBから操作したいと思ったのですが、単純にvalueにて数値を入れてもだめなのでしょうか? 宜しくお願いいたします。

  • jQueryを使用したチェックボックス動作について

    現在、HTML作成におきまして、 チェックボックスのチェックによる、フォームの入力可・不可の設定をしたいと思っており、下記の様なソースをしようしております。 input type="text" において、1つのみであれば、上記の動作は可能ですが、 複数の場合、一つ目のみ有効(入力可・不可)になります。 複数を有効する方法はありますでしょうか。 <現在のソース> ========以下、script========= <script> $(function(){ $("div.ckbtnon input[type=checkbox]").change(function(){ $("div.ckbtnon input").next("input[type=text]").attr("disabled", "disabled").removeClass("bg_white").addClass("bg_disabled"); $(":checked").next("input[type=text]").removeAttr("disabled").removeClass("bg_disabled").addClass("bg_white"); }).trigger("change"); }); </script> ・ ・ ・ ========以下、HTML========= <div class="ckbtnon"> <label> <input type="checkbox" name="check" value="">CHECKTEST <input type="text" name="txt" value=""><!--1--> <input type="text" name="txt" value=""><!--2--> </label> </div> //ここまで HTML内の<input type="text" name="txt" value="">が2つ目の場合、効かない状態になります。 1つ目を含め複数のテキスト入力に可・不可を制御できますでしょうか。

  • javascriptでのテキストボックス制御

    javascriptを使用して 特定のテキストボックスを動的に enable←→disableを切り替えたく、様々なホームページを見ながら試行錯誤して、下記ソースまで辿りつきましたが、うまく動かなくて困っています。 どうかご教示ください。よろしくお願いします。 現状:チェックをいれると enable→disableになるが、外すと戻らない。 目標:同上+チェック外すと最初disableも含めて、enableになる。 <html> <head> <script language="javascript" type="text/javascript"> function autochk(f){ for(var i=0;i<f.form.length;i++){ if (f.form.elements[i].className=="ko"){ if (f.form.elements[i].checked){ //checked チェックが入っていたら f.form.elements[i].disabled = false; // 入力不可, 無効化 }else{ f.form.elements[i].disabled = true; // 入力可能,有効化 } } } } </script> <style type="text/css"> <!-- ul li { list-style: none; } label { margin-right: 10px; width:200px; float: left; } --> </style> </head> <body> <form> <ul> <li><input type="checkbox" name="oya" value="1" onclick="autochk(this);">チェック</li> <li><label>無効→チェック→無効→有効</label><input type="text" name="ko1" class="ko" value="1" disabled></li> <li><label>有効→チェック→無効→有効</label><input type="text" name="ko2" class="ko" value="1"></li> <li><label>有効→チェック→そのまま</label><input type="text" name="other1" value="1"></li> <li><label>有効→チェック→無効→有効</label><input type="text" name="ko3" class="ko" value="1"></li> <li><label>有効→チェック→無効→有効</label><input type="text" name="ko4" class="ko" value="1"></li> <li><label>有効→チェック→そのまま</label><input type="text" name="other2" value="1"></li> </form> </ul> </body> </html>

  • データによってチェックボックスを操作

    csvファイルをデータバインドを使ってHTMLに表示するとき、読み出したデータをそのまま表示するのではなく、データによってチェックボックスを操作できるようにしたいのですが、どうやったら出来るのかさっぱり分かりません。 <input name="c1" type="checkbox" value="">有 <input name="c2" type="checkbox" value="">無 <input name="c3" type="checkbox" value="">撤去 となっている時、データが1なら「有」にチェックを、0なら「無」にチェック、-1なら「撤去」にチェックを入れた状態で表示し、且つ値もセットしたいのですが、javascriptだけで可能でしょうか? 可能ならば、どういったスクリプトを書けばいいのでしょうか? ご教授お願い致します。

  • アンケートフォームがうまく動かない

    プロバイダーは日本テレコム、レンタルサーバーはロリポップです。 以下のように、アンケートフォームを作りました。 <FORM ACTION="/cgi-bin/enquete.cgi?user=○○○○&address=○○○○@○○" METHOD="post"> 名前 <INPUT TYPE="text" NAME="name" SIZE="18" maxlength="30"><br><br> 居住地(都道府県のみ) <INPUT TYPE="text" NAME="house" SIZE="18" maxlength="30"><br><br> メールアドレス <INPUT TYPE="text" NAME="name" SIZE="18" maxlength="30"><br><br> 年齢 <input type="checkbox"name="old"value="19歳以下">19歳以下 <input type="checkbox"name="old"value="20~25歳未満">20~25歳未満 <input type="checkbox"name="old"value="25~30歳未満">25~30歳未満 <input type="checkbox"name="old"value="30~35歳未満">30~35歳未満 <input type="checkbox"name="old"value="35~40歳未満">35~40歳未満 <input type="checkbox"name="old"value="40~45歳未満">40~45歳未満 <input type="checkbox"name="old"value="45~50歳未満">45~50歳未満 <input type="checkbox"name="old"value="50歳以上">50歳以上<br><br> アンケートにご協力いただきましてありがとうございました。<br><br> <INPUT TYPE="SUBMIT" VALUE="送信する"> <INPUT TYPE="RESET" VALUE="書き直す"> </FORM> 以上のようなものです。 ですが、送信ボタンを押しても、ロリポップ側で、「指定されたページ(URL)は見つかりません。」と出ます。 上部の○○部分、2つありますが、後半のほうは送信先となるアドレスを記入しますよね。最初のほうの○○には何を記入するのですか? といいますか・・・上のHTMLは全然ダメですか? できるだけ平易に教えていただけましたらと思います。

  • フォーム上で複数の同じスクリプトを動作させるには

    選択したチェックボックスのvalue値がテキストボックスに表示されるjavascriptについてなのですが、 一つのフォーム上にclass名の異なる複数のチェックボックスを設置した場合、動作しなくなってしまいます。 正確には最初に記述したチェックボックス(下の場合はkeyword1)が動作しません。 一つのフォーム上でclass名の異なる複数のチェックボックスを設置するには、javascriptをどのように書き換えればいいのでしょうか? よろしくお願いします。 <form method="post" action="sample.cgi" name="hoge"> <td> <script language="javascript"> function check(f){ f.keyword1.value=""; for (var i=0; i<f.length;i++){ if(f[i].className=="food" && f[i].checked==true){ f.keyword1.value += f[i].value; } } f.keyword1.readOnly=(f.keyword1.value!=""); } </script> <input type="checkbox" class="food" name="food" onClick="check(this.form)" value="野菜">野菜 <input type="checkbox" class="food" name="food" onClick="check(this.form)" value="魚">魚 <input type="checkbox" class="food" name="food" onClick="check(this.form)" value="惣菜">惣菜 <input value="" size="50" type="text" name="keyword1"> </td> <td> <script language="javascript"> function check(f2){ f2.keyword2.value=""; for (var i=0; i<f2.length;i++){ if(f2[i].className=="city" && f2[i].checked==true){ f2.keyword2.value += f2[i].value; } } f2.keyword2.readOnly=(f2.keyword2.value!=""); } </script> <input type="checkbox" class="city name="city" onClick="check(this.form)" value="東京">東京 <input type="checkbox" class="city name="city" onClick="check(this.form)" value="大阪">大阪 <input type="checkbox" class="city name="city" onClick="check(this.form)" value="福岡">福岡 <input value="" size="50" type="text" name="keyword2"> </td> </form>

専門家に質問してみよう