Подтвердить что ты не робот

JQuery: изменение типа элемента из скрытого ввода

У меня есть вход, который он задает, скрытый, мне нужно изменить его тип на текст. Не может показаться, что это возможно, или если это возможно с помощью jQuery

4b9b3361

Ответ 1

С помощью jQuery 1.4 вы можете изменить тип ввода во время его отсоединения.

marker = $('<span />').insertBefore('#myInput');
$('#myInput').detach().attr('type', 'text').insertAfter(marker);
marker.remove();

Ответ 2

Я не уверен, что это возможно, поэтому я бы предложил использовать скрытый div, чтобы содержать элемент ввода, который может быть показан по мере необходимости. Поле ввода текста может хранить данные даже в том случае, если они скрыты.

Ответ 3

IE не позволит вам изменить тип элемента формы по соображениям безопасности, поэтому я бы пошел с предложением Aram hidden div.

Ответ 4

Вот как бы я это сделал:

$("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
});

Если вы хотите отфильтровать некоторые элементы, вызовите фильтр() перед каждым(), например:

$("input[type='hidden']").filter("[name='whatever']").each(function...

Ответ 5

простой человек...

$('input[type="hidden"]').each (function() { this.type = 'text'; });          

Запустить его на событие

Ответ 6

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; функция выше изменяет атрибут типа. Использование:

var inputElemt = jQuery("#input");
Overlay.toAnyType(inputElemt, "text");

Ответ 7

Старый поток, но мне недавно нужно было сделать что-то подобное, но с полями файлов и очистить их... Я думаю, что одно и то же решение может применяться, но по крайней мере вы можете захватить содержимое в этом случае.

var temp = $('#hidden-field').val();
$("#container-for-field").html("<input id='not-hidden' type='text' value='"+temp+"'/>");

Это также должно решить проблему:).