jQuery-その場で非表示のフォーム要素を作成する


回答:


613
$('<input>').attr('type','hidden').appendTo('form');

2番目の質問に答えるには:

$('<input>').attr({
    type: 'hidden',
    id: 'foo',
    name: 'bar'
}).appendTo('form');

56
作成後に入力タイプを変更しようとすると、IEがチョークすることに注意してください。$('<input type="hidden">').foo(...)回避策として使用してください。
Roy Tinker、

4
また、jQueryのドキュメントでは、DOM操作はコストがかかるため、追加する入力が複数ある場合は、$(this).append(hidden_​​element_array.join( ''));のようなものを使用してすべてを一度に追加することを推奨しています。
Kedar Mhaswade

1
私はjQuery 1.6.2でこのメソッドを試してみて、Firefox 7.0.1でこのエラーを受け取りました:「キャッチされない例外:タイププロパティは変更できません」これらの条件下では、タイププロパティを変更するためにattrメソッドを使用できないようです。現在、以下の方法を試しています...
Mikepote

この同じアプローチ.propは、新しいAPIリリースの新しい関数で機能しますか?
SpaceBison 2012

3
多くの人が考えているように.prop、@ SpaceBison は「新しい.attr」ものではありません。.attr属性の設定には引き続き使用する必要があります。
David Hellsing 2013年

138
$('#myformelement').append('<input type="hidden" name="myfieldname" value="myvalue" />');

1
誰かがこの答えを古いIEでテストしましたか?
アーサーハルマ

11
個人的には、DOM操作/関数呼び出しが少ないため、これは受け入れられた回答よりもはるかに優れたアプローチであると思います。
PaulSkinner 2013

3
@PaulSkinner与えられたケースでは、はい、あなたは正しいですが、必ずしもそうではありません。こちらをご覧ください。stackoverflow.com
Fernando Silva

34

Davidと同じですが、attr()はありません

$('<input>', {
    type: 'hidden',
    id: 'foo',
    name: 'foo',
    value: 'bar'
}).appendTo('form');

3
タグを作成するこの方法の名前はありますか?
DLF85 2016年

入力を1回だけ追加する方法 存在する場合は、同じ属性で新しい値を入力し続ける
Snow Bases

非常に合理化された、私はそれが大好きです。
ジャック

27

さらに属性を追加したい場合は、次のようにします。

$('<input>').attr('type','hidden').attr('name','foo[]').attr('value','bar').appendTo('form');

または

$('<input>').attr({
    type: 'hidden',
    id: 'foo',
    name: 'foo[]',
    value: 'bar'
}).appendTo('form');

これはコンソールエラーを引き起こしています Unexpected identifier
Prafulla Kumar Sahu

2番目のコード、 "id"はfoo1、foo2などのように動的に生成する必要があるようです
Web_Developer

5
function addHidden(theForm, key, value) {
    // Create a hidden input element, and append it to the form:
    var input = document.createElement('input');
    input.type = 'hidden';
    input.name = key;'name-as-seen-at-the-server';
    input.value = value;
    theForm.appendChild(input);
}

// Form reference:
var theForm = document.forms['detParameterForm'];

// Add data:
addHidden(theForm, 'key-one', 'value');

2
とは'name-as-seen-at-the-server'
SaAtomic

1

動作中のJSFIDDLE

あなたの形が

<form action="" method="get" id="hidden-element-test">
      First name: <input type="text" name="fname"><br>
      Last name: <input type="text" name="lname"><br>
      <input type="submit" value="Submit">
</form> 
    <br><br>   
    <button id="add-input">Add hidden input</button>
    <button id="add-textarea">Add hidden textarea</button>

このようにフォームに非表示の入力とテキストエリアを追加できます

$(document).ready(function(){

    $("#add-input").on('click', function(){
        $('#hidden-element-test').prepend('<input type="hidden" name="ipaddress" value="192.168.1.201" />');
        alert('Hideen Input Added.');
    });

    $("#add-textarea").on('click', function(){
        $('#hidden-element-test').prepend('<textarea name="instructions" style="display:none;">this is a test textarea</textarea>');
        alert('Hideen Textarea Added.');
    });

});

ここで動作しているjsfiddleを確認してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.