jQuery - Membuat elemen formulir tersembunyi dengan cepat


Jawaban:


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

Untuk menjawab pertanyaan kedua Anda:

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

56
Perhatikan bahwa IE akan tersedak jika Anda mencoba mengubah tipe input setelah itu dibuat. Gunakan $('<input type="hidden">').foo(...)sebagai solusi.
— Roy Tinker

4
Juga, dokumentasi jQuery menunjukkan bahwa karena manipulasi DOM mahal, jika Anda memiliki beberapa input untuk ditambahkan, tambahkan semuanya sekali menggunakan sesuatu seperti $ (ini). Append (hidden_element_array.join (''));
— Kedar Mhaswade

1
Saya baru saja mencoba metode ini dengan jQuery 1.6.2 dan menerima kesalahan ini dengan Firefox 7.0.1: "pengecualian tanpa tertangkap: tipe properti tidak dapat diubah" Tampaknya Anda tidak dapat menggunakan metode attr untuk mengubah tipe properti dalam kondisi ini. Saya sekarang mencoba metode di bawah ini ...
— Mikepote 11/11

Akankah pendekatan yang sama ini bekerja dengan .propfungsi yang lebih baru di rilis API yang lebih baru?
— SpaceBison

3
@ SpaceBison .propbukan "baru .attr" karena banyak orang tampaknya berpikir. Anda masih harus menggunakan .attruntuk mengatur atribut.
— David Hellsing

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

1
Apakah seseorang menguji jawaban ini pada IE lama?
— Arthur Halma

11
Secara pribadi, saya percaya ini adalah pendekatan yang jauh lebih baik daripada jawaban yang diterima karena melibatkan lebih sedikit manipulasi / panggilan fungsi DOM.
— PaulSkinner

3
@ PaulSkinner Untuk kasus yang diberikan, ya Anda benar, tetapi tidak selalu demikian. Lihat di sini stackoverflow.com/a/2690367/1067465
— Fernando Silva

34

Sama seperti milik David, tetapi tanpa attr ()

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

3
Apakah ada nama untuk cara mengisi tag ini?
— DLF85

bagaimana cara menambahkan input hanya 1 kali? jika ada, ia terus memasukkan nilai baru dengan atribut yang sama
— Snow Bases

Sangat ramping, saya menyukainya.
— Jacques

27

jika Anda ingin menambahkan lebih banyak atribut lakukan saja seperti:

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

Atau

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

ini memberikan kesalahan konsol Unexpected identifier.
— Prafulla Kumar Sahu

Kode kedua, sepertinya "id" perlu dibuat secara dinamis seperti foo1, foo2 dll
— 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
Apa itu 'name-as-seen-at-the-server'?
— SaAtomic

1

Bekerja JSFIDDLE

Jika formulir Anda seperti

<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>

Anda dapat menambahkan input dan textarea tersembunyi ke formulir seperti ini

$(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.');
    });

});

Lihat jsfiddle yang berfungsi di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.