jQuery: изменить тип элемента со скрытого на ввод - PullRequest
30 голосов
/ 12 февраля 2009

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

Ответы [ 7 ]

57 голосов
/ 17 июня 2010

С помощью jQuery 1.4 вы можете изменить тип входа, пока он отключен.

marker = $('<span />').insertBefore('#myInput');
$('#myInput').detach().attr('type', 'text').insertAfter(marker);
marker.remove();
13 голосов
/ 12 февраля 2009

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

8 голосов
/ 18 февраля 2009

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

$("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...
8 голосов
/ 12 февраля 2009

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

2 голосов
/ 23 марта 2010

легкий человек ...

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

Запуск по событию

0 голосов
/ 04 февраля 2011

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

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

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

0 голосов
/ 03 сентября 2010
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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...