jQuery - 动态创建隐藏的表单元素

IT技术 javascript jquery forms hidden-field
2021-01-15 20:17:31

使用 jQuery动态创建隐藏输入表单字段的最简单方法是什么

6个回答
$('<input>').attr('type','hidden').appendTo('form');

回答你的第二个问题:

$('<input>').attr({
    type: 'hidden',
    id: 'foo',
    name: 'bar'
}).appendTo('form');
这种相同的方法是否适用.prop于较新 API 版本中的较函数?
2021-03-14 20:17:31
此外,jQuery 文档表明,由于 DOM 操作成本高昂,如果您要添加多个输入,请使用 $(this).append(hidden_​​element_array.join('')); 之类的内容添加所有输入一次。
2021-03-17 20:17:31
请注意,如果您在创建后尝试更改输入类型,IE 会卡住。使用$('<input type="hidden">').foo(...)作为一种变通方法。
2021-04-06 20:17:31
@SpaceBison.prop并不是.attr很多人认为的“新的”。您仍然应该使用.attr来设置属性。
2021-04-08 20:17:31
我刚刚在 jQuery 1.6.2 中尝试了这种方法,并在 Firefox 7.0.1 中收到了这个错误:“未捕获的异常:类型属性无法更改” 在这些条件下,您似乎无法使用 attr 方法更改类型属性。我现在正在尝试下面的方法......
2021-04-12 20:17:31
$('#myformelement').append('<input type="hidden" name="myfieldname" value="myvalue" />');
有人在旧 IE 上测试过这个答案吗?
2021-03-27 20:17:31
就个人而言,我认为这是比公认的答案更好的方法,因为它涉及较少的 DOM 操作/函数调用。
2021-03-27 20:17:31
@PaulSkinner 对于给定的情况,是的,您是对的,但并非总是如此。看看这里stackoverflow.com/a/2690367/1067465
2021-04-12 20:17:31

与 David 的相同,但没有 attr()

$('<input>', {
    type: 'hidden',
    id: 'foo',
    name: 'foo',
    value: 'bar'
}).appendTo('form');
如何仅附加输入1次?如果它存在,它会继续输入具有相同属性的新值
2021-03-28 20:17:31
这种填充标签的方式有名称吗?
2021-03-30 20:17:31
非常精简,我喜欢。
2021-03-30 20:17:31

如果您想添加更多属性,请执行以下操作:

$('<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
2021-03-18 20:17:31
第二个代码,似乎需要动态生成“id”,例如 foo1、foo2 等
2021-03-23 20:17:31
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');
是什么'name-as-seen-at-the-server'
2021-03-28 20:17:31