[解決済み] フォームに入力要素を動的に追加する
質問
フィールドセットを動的に追加する方法について、多くのブログや記事を読みましたが、どれも非常に複雑な答えを与えています。私が必要としているのは、それほど複雑なことではありません。
私の HTML コードです。
<input type="text" name="member" value="">Number of members: (max. 10)<br />
<a href="#" id="filldetails">Fill Details</a>
で、ユーザーが整数値(javascriptでバリデーションを確認しています)を入力するのは
input
フィールドに入力します。そして、クリックすると
Fill Details
のリンクをクリックすると、対応する数の入力フィールドが表示され、入力することができます。私はjavascriptを使用してこれを実現したいです。
私はjavascriptのプロではありません。で入力された整数を取得する方法を考えていました。
input
フィールドに入力された整数を取得し、対応する入力フィールドの数を表示します。
どのように解決するのですか?
を使用することができます。
onclick
イベントハンドラを使って、テキストフィールドの入力値を取得することができます。フィールドには必ず一意な
id
属性を通して安全に参照できるようにします。
document.getElementById()
:
要素を動的に追加したい場合、要素を配置するコンテナを用意する必要があります。例えば
<div id="container">
. によって新しい要素を作成します。
document.createElement()
で新しい要素を作成し
appendChild()
を使って、それぞれをコンテナに追加します。あなたは、意味のある
name
属性(例えば
name="member"+i
のそれぞれに対して、動的に生成された
<input>
を生成し、フォームで送信します。
を作成することもできます。
<br/>
要素に
document.createElement('br')
. 単にテキストを出力したいだけなら
document.createTextNode()
を使うことができます。
また、コンテナが投入されそうになるたびにクリアしたい場合には
hasChildNodes()
とし
removeChild()
を一緒にしてください。
<html>
<head>
<script type='text/javascript'>
function addFields(){
// Number of inputs to create
var number = document.getElementById("member").value;
// Container <div> where dynamic content will be placed
var container = document.getElementById("container");
// Clear previous contents of the container
while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}
for (i=0;i<number;i++){
// Append a node with a random text
container.appendChild(document.createTextNode("Member " + (i+1)));
// Create an <input> element, set its type and name attributes
var input = document.createElement("input");
input.type = "text";
input.name = "member" + i;
container.appendChild(input);
// Append a line break
container.appendChild(document.createElement("br"));
}
}
</script>
</head>
<body>
<input type="text" id="member" name="member" value="">Number of members: (max. 10)<br />
<a href="#" id="filldetails" onclick="addFields()">Fill Details</a>
<div id="container"/>
</body>
</html>
動作サンプルはこちら JSFiddle .
関連
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] jQueryで入力を無効化/有効化する?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] <button> vs. <input type="button" />. Which to use?
-
[解決済み] フォーム送信のようなJavaScriptのポストリクエスト
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] セルフクローズスクリプトエレメントが機能しないのはなぜですか?
-
[解決済み】enctype='multipart/form-data'とはどういう意味ですか?
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 指定された要素にクラスを追加するには?
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] ECMAScriptとは?
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?