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.