jQuery - Anında gizli form öğesi oluştur


Yanıtlar:


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

İkinci sorunuza cevap vermek için:

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

56
Giriş türünü oluşturulduktan sonra değiştirmeye çalışırsanız IE'nin boğulacağını unutmayın. $('<input type="hidden">').foo(...)Geçici çözüm olarak kullanın .
Roy Tinker

4
Ayrıca, jQuery belgeleri, DOM manipülasyonu pahalı olduğu için, eklenecek birden fazla girişiniz varsa, $ (this) .append (hidden_element_array.join ('')) gibi bir şey kullanarak hepsini bir kez ekleyin;
Kedar Mhaswade

1
Ben sadece jQuery 1.6.2 ile bu yöntemi denedim ve Firefox 7.0.1 ile bu hatayı aldı: "yakalanmayan istisna: type özelliği değiştirilemez" Bu koşullar altında type özelliği değiştirmek için attr yöntemini kullanamaz gibi görünüyor. Şimdi aşağıdaki yöntemi deniyorum ...
Mikepote

Aynı yaklaşım .prop, yeni API sürümündeki yeni işlevle de çalışır mı?
SpaceBison

3
@SpaceBison birçok insanın düşündüğü gibi " .propyeni .attr" değil . .attrNitelikleri ayarlamak için kullanmaya devam etmelisiniz .
David Hellsing

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

1
Birisi bu cevabı eski IE'de test etti mi?
Arthur Halma

11
Şahsen, bunun daha az DOM manipülasyonu / fonksiyon çağrısı içerdiği için kabul edilen cevaptan çok daha iyi bir yaklaşım olduğuna inanıyorum.
PaulSkinner

3
@PaulSkinner Verilen dava için, evet haklısınız, ama her zaman böyle değil. Buraya bir göz atın stackoverflow.com/a/2690367/1067465
Fernando Silva

34

David'inkiyle aynı, ancak attr () olmadan

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

3
Bir etiketi doldurmanın bu yolu için bir ad var mı?
DLF85

giriş sadece 1 kez nasıl eklenir? eğer mevcutsa, aynı nitelikte yeni bir değer girmeye devam ediyor
Snow Bases

Çok akıcı, bayıldım.
Jacques

27

Daha fazla özellik eklemek istiyorsanız aşağıdakileri yapın:

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

Veya

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

bu konsol hatası veriyor Unexpected identifier.
Prafulla Kumar Sahu

İkinci kod, "id" dinamik olarak foo1, foo2 vb gibi bir şey üretilmesi gerekiyor gibi görünüyor
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
Nedir 'name-as-seen-at-the-server'?
SaAtomic

1

Çalışan JSFIDDLE

Formun gibiyse

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

Bu şekilde oluşturmak için gizli girdi ve metin alanı ekleyebilirsiniz

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

});

Çalışırken jsfiddle'ı buradan kontrol edin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.