我有一个输入,它的类型设置为隐藏,我需要将其类型更改为文本。似乎无法解决这个问题,或者是否可以使用jQuery
答案 0 :(得分:57)
使用jQuery 1.4,您可以在分离时更改输入的类型。
marker = $('<span />').insertBefore('#myInput');
$('#myInput').detach().attr('type', 'text').insertAfter(marker);
marker.remove();
答案 1 :(得分:13)
我不确定这是可能的,所以我建议使用隐藏的div来包含输入元素,可以根据需要显示。文本输入字段仍然可以保存数据,即使它是隐藏的。
答案 2 :(得分:8)
IE出于安全原因不允许您更改表单元素的类型,因此我会使用Aram隐藏的div建议。
答案 3 :(得分:8)
以下是我将如何做到这一点:
$("input[type='hidden']").each(function(){
var name = $(this).attr('name'); // grab name of original
var value = $(this).attr('value'); // grab value of original
/* create new visible input */
var html = '<input type="text" name="'+name+'" value="'+value+'" />';
$(this).after(html).remove(); // add new, then remove original input
});
如果要过滤某些元素,请在每个()之前调用filter(),如下所示:
$("input[type='hidden']").filter("[name='whatever']").each(function...
答案 4 :(得分:2)
$('input[type="hidden"]').each (function() { this.type = 'text'; });
在事件中触发
答案 5 :(得分:0)
Overlay.toAnyType = function (c, type) {
var shadow = jQuery(document.createElement(c.context.nodeName));
// Clone attributes to new object.
for (var i = 0; i < c[0].attributes.length; i++) {
var attr = c[0].attributes[i].name;
var val = c[0].attributes[i].value;
if (attr == "type") val = type;
shadow.attr(attr, val);
}
shadow.insertAfter(c);
c.remove();
};
当c是jQuery对象时;上面的函数改变了type属性。用法:
var inputElemt = jQuery("#input");
Overlay.toAnyType(inputElemt, "text");
答案 6 :(得分:0)
旧线程,但我最近需要做类似的事情但是使用文件字段并清除它们......我认为同样的解决方案可以应用,但至少你可以在这种情况下获取内容。
var temp = $('#hidden-field').val();
$("#container-for-field").html("<input id='not-hidden' type='text' value='"+temp+"'/>");
那也应该解决问题:)。