我有一些复选框输入,我以模态显示,具有预设的value
属性。单击"确定",我克隆它们,将它们的输入类型更改为hidden
,并将它们附加到我的文档正文中的div。如果我尝试检索它们的值,jQuery会从.val()
函数返回一个空白字符串,根据我的理解,它应该只返回value
属性。相反,如果我没有输入类型转换..(如果我单独保留类型,保留一个复选框),在这些附加输入上调用.val()
会得到正确的值。是否有我遗漏的东西,或者IE中可能存在错误? value
属性的初始值是否应该基于value
属性的值?
仅适用于Chrome,FF,Safari ..不是IE
$selectedCheckboxes.clone().attr('type', 'hidden')
修复IE问题
$selectedCheckboxes.clone().attr('type', 'hidden').each(function(){ $(this).val($(this).attr('value')); })
答案 0 :(得分:0)
Microsoft文档说明,如果type
元素已有类型,则无法更改其input
属性:
“检索或初始设置由...表示的输入控件的类型 对象。“
MDN引用甚至没有列出type
属性,因此如果您尝试更改它,则没有说明会发生什么。输入元素的文档分为不同的类型,表明元素不是为了改变类型。
不是克隆输入并尝试更改其类型,而是创建新元素:
$selectedCheckboxes.map(function(i, e){
return $('<input>', { type: 'hidden', name: e.name, value: e.value });
})