在IE中更改克隆的输入类型会导致value属性丢失

时间:2015-04-23 18:01:47

标签: javascript jquery internet-explorer

我有一些复选框输入,我以模态显示,具有预设的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')); })

1 个答案:

答案 0 :(得分:0)

Microsoft文档说明,如果type元素已有类型,则无法更改其input属性:

  

“检索或初始设置由...表示的输入控件的类型   对象。“

参考:type property

MDN引用甚至没有列出type属性,因此如果您尝试更改它,则没有说明会发生什么。输入元素的文档分为不同的类型,表明元素不是为了改变类型。

参考:input type="checkbox"

不是克隆输入并尝试更改其类型,而是创建新元素:

$selectedCheckboxes.map(function(i, e){
  return $('<input>', { type: 'hidden', name: e.name, value: e.value });
})