- ベストアンサー
JavaScriptでテキストボックスを追加する方法
- JavaScriptを使用して、テキストボックスを追加する方法について教えてください。
- テーブルを組んだ形で複数の異なる名前のテキストボックスを追加したいです。
- イメージとしては、2列複数行の形になれば良いです。具体的な実装方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>一つ解決したらまた問題発生します。 それはなんとなく書いているからですね。 きちんと設計すれば思ったとおりにしか動かないのがプログラムです。 今回の件は、自分自身をオブジェクトでわたしてやればよいでしょう。 <script> function myAdd(obj){ var max=5; var c=count("hoge"); if(c>=max) return false; var oTR=document.createElement("tr"); var names=["hoge","fuga"]; for(var i in names){ var oTD = document.createElement("td"); var oTag = document.createElement("input"); oTag.setAttribute("type", "text"); oTag.setAttribute("name", names[i] + (c+1).toString()); oTD.appendChild(oTag); oTR.appendChild(oTD); } document.getElementById("t0").getElementsByTagName("tbody")[0].appendChild(oTR); if(c>=max-1) obj.disabled=true; } function count(name){ var tags=document.getElementsByTagName("input"); var c=0; var reg=RegExp("^"+name+"[0-9]+$"); for(var i=0;i<tags.length;i++){ if(tags[i].name.match(reg)){ c++; } } return c; } </script> </head> <body> <form> <table id="t0" border> <tbody> <tr> <td><input type="text" name="hoge1" value=""></td> <td><input type="text" name="fuga1" value=""></td> </tr> <tr> <td><input type="text" name="hoge2" value=""></td> <td><input type="text" name="fuga2" value=""></td> </tr> <tr> <td><input type="text" name="hoge3" value=""></td> <td><input type="text" name="fuga3" value=""></td> </tr> </tbody> </table> <input type="button" value="Add" onClick="myAdd(this)"> </form>
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
ざっとこんな感じで処理してみては? <script type="text/javascript"> function myAdd(){ var oTR=document.createElement("tr"); var c=count("hoge"); var names=["hoge","fuga"]; for(var i in names){ var oTD = document.createElement("td"); var oTag = document.createElement("input"); oTag.setAttribute("type", "text"); oTag.setAttribute("name", names[i] + (c+1).toString()); oTD.appendChild(oTag); oTR.appendChild(oTD); } document.getElementById("t0").getElementsByTagName("tbody")[0].appendChild(oTR); } function count(name){ var tags=document.getElementsByTagName("input"); var c=0; var reg=RegExp("^"+name+"[0-9]+$"); for(var i=0;i<tags.length;i++){ if(tags[i].name.match(reg)){ c++; } } return c; } </script> </head> <body> <form> <table id="t0" border> <tbody> <tr> <td><input type="text" name="hoge1" value=""></td> <td><input type="text" name="fuga1" value=""></td> </tr> <tr> <td><input type="text" name="hoge2" value=""></td> <td><input type="text" name="fuga2" value=""></td> </tr> <tr> <td><input type="text" name="hoge3" value=""></td> <td><input type="text" name="fuga3" value=""></td> </tr> </tbody> </table> <input type="button" value="Add" onClick="myAdd()"> </form>
お礼
ありがとうございました。 あとテキストエリアも加えたりしています。 あーJavaScriptって難しいですね。
補足
ありがとうございます。 動きました。あと15個になると追加するボタンをdisableにしようと思っていたんですが、if文で制御してelseでdisableを仕込もうとしたのですが、うまくいきません。 一つ解決したらまた問題発生します。JavaScriptって難しいですね。
お礼
ご返答ありがとうございます。 おっしゃるとおりの状況で恥ずかしいともに心が痛いです。 まだプログラマとしては初心者でこれからも勉強していきたいです。 ありがとうございました。