jQuery:将元素类型从隐藏更改为输入

时间:2009-02-12 11:07:39

标签: javascript jquery html css

我有一个输入,它的类型设置为隐藏,我需要将其类型更改为文本。似乎无法解决这个问题,或者是否可以使用jQuery

7 个答案:

答案 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+"'/>");

那也应该解决问题:)。