2010-03-09 113 views

回答

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

要回答你的第二个问题:

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

是否有可能在飞行中添加ID和名称属性??????? – 2010-03-09 10:07:26

+0

谢谢大卫 – 2010-03-09 11:32:00

+51

请注意,如果您在创建输入类型后尝试更改输入类型,IE将会窒息。使用'$('')。foo(...)'作为解决方法。 – 2011-10-06 04:18:28

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

是否有人测试旧IE这个答案? – 2012-08-31 11:54:20

+7

个人而言,我认为这是一个比公认的答案更好的方法,因为它涉及更少的DOM操作/函数调用。 – PaulSkinner 2013-08-05 09:38:46

+2

@PaulSkinner对于给定的情况,是的,你是正确的,但并不总是如此。看看这里http://stackoverflow.com/a/2690367/1067465 – 2014-08-06 18:08:57

17

,如果你想添加更多的属性,只是不喜欢:

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

或者

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

这是给控制台错误'意外的标识符'。 – 2017-07-19 08:00:39

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

2
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'); 
+0

什么是“在服务器上看到的名字”? – SaAtomic 2017-03-13 06:31:32

10

同为大卫的,但没有ATTR()

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

这种填充标签的方式有没有名字? – DLF85 2016-03-08 05:24:03