[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ЗАмена инпутов
vital
Вобщем, есть сверстанная форма. Нужно найти на ней все инпуты type=text( это понятно = getElementByName). И заменить их на то, что в них введено(т.е. инпут пропадает, и остается то, что в него ввели). Вот тут уже я теряюсь немного.. В идеале, хотелось бы на jQuery.
Подскажите, а?



Спустя 12 минут, 9 секунд (24.09.2010 - 15:21) Семён написал(а):
Держи сделал то что нужно было, только изменил на действие по двойному клику по полю, проверял в FireFox.

Jquery
$("input:text").dblclick(function () {
$(this).replaceWith($(this).val());
});

Спустя 4 минуты, 41 секунда (24.09.2010 - 15:25) Семён написал(а):
Хочешь сразу все, то вот.

Jquery
$("input:text").each(function () {
$(this).replaceWith($(this).val());
});

Спустя 11 минут, 27 секунд (24.09.2010 - 15:37) vital написал(а):
Cпасибо, работает. НО мне хватило бы подсказки про each =) Ну не знаю я джквери, и как-то с лазанием по ману у меня туго сейчас. Теперь надо проверить нек-е поля на заполненность(подскажите ф-ию) и это.. Простая возможность их(едиты) вернуть есть?

Спустя 10 минут, 26 секунд (24.09.2010 - 15:47) Семён написал(а):
Цитата
Простая возможность их(едиты) вернуть есть?

Есть конечно, но придётся :

1) есть input:
2) преобразуем к примеру
 "<div class='input-text'>" + $(this).val() + "</div>"

3) Чтобы изменить вызываем тотже each только для class.input-text и меняем на input:text smile.gif))

Спустя 9 минут, 31 секунда (24.09.2010 - 15:57) Семён написал(а):
Ну т.е. так примерно:

Преобразование в текст:
$("input:text").each(function () {
$(this).replaceWith("<div class='input-text'>" + $(this).val() + "</div>");
});


Преобразование обратно из текста:
$(".input-text ").each(function () {
$(this).replaceWith("<input type='text' value='" + $(this).val() + "' />");
});

Спустя 4 минуты, 6 секунд (24.09.2010 - 16:01) vital написал(а):
Пока вы дополняли, я сам сделал так же, спасибо) Может я не атк плох как кажусь?)

Лажа в другом. У едитов разный size, И при возвращении таким способом он теряется.. Надо как-то сохранять его что ли.. Черт( Не озота каждый едит руками менять( их штук 15. А забить на это нельзся, ибо эту форму потом печатать(

Спустя 1 минута, 22 секунды (24.09.2010 - 16:02) vital написал(а):
Да и хрен с ним с размером, на нек-х едитах висят джейкверивские уи, и аяксовые обработчики...( И все это надо сохранить. Неужто только руками?

Спустя 3 минуты, 35 секунд (24.09.2010 - 16:06) Гость_Michael написал(а):
Атрибут size сохраняй также. Можно в том же диве в каком то атрибуте.

Спустя 1 минута, 20 секунд (24.09.2010 - 16:07) vital написал(а):
Вот так из простой мелочи получился гемморой)

Спустя 6 минут, 35 секунд (24.09.2010 - 16:14) vital написал(а):
function hideedits()
{
$("input:text").each(function () {
$(this).replaceWith("<span class=\"input-text\" size="+$(this).size+" id="+$(this).id+">"+$(this).val()+"</span>");
});
$("#viewbtn").replaceWith("<input type=\"button\" value=\"Править\" id=\"viewbtn\" onclick=\"showedits()\">");
}
function showedits()
{
$(".input-text").each(function () {
$(this).replaceWith("<input type=\"text\" id=\""+$(this).id+"\ size=\""+$(this).size+"\" value=\""+$(this).val()+"\">");
});
$("#viewbtn").replaceWith("<input type=\"button\" id=\"viewbtn\" value=\"Предпросмотр\" onclick=\"hideedits()\">");
}

Вобщем вот как вот это сделать правильно?)
Мое сотое сообщение)

Спустя 3 минуты, 5 секунд (24.09.2010 - 16:17) Michael написал(а):
Вместо
$(this).size
надо
$(this).attr('size')
а устанавливать
$(this).attr('size', 10)

Спустя 7 минут, 48 секунд (24.09.2010 - 16:25) vital написал(а):
Спасибо. Работает, атрибуты сохраняются, но аякс обработки не происходит. Как и появления, скажем, календарика(стандартный джкверивский). Как лечить?
ПС.
Сам понимаю, что банальный, наверняка, вопрос..

Спустя 8 минут, 36 секунд (24.09.2010 - 16:33) vital написал(а):
jQuery.live сейчас попробую понять как его..

Спустя 7 минут, 13 секунд (24.09.2010 - 16:40) Семён написал(а):
ничё не понял

Спустя 7 минут, 17 секунд (24.09.2010 - 16:48) vital написал(а):
Вобщем. На те прятыаемые инпуты навешены плагины - календарь, автодополнение..
Так вот, после скрытия\показа инпута они не срабатывают. В гугле нарыл - что на динамические элементы обработчики навешиваются с помощью .live(). Вот как дальше действовать не понятно, т.к в моем случае все эти jQuey UI штуковины прицеплялись сами просто по id..

Спустя 5 минут, 10 секунд (24.09.2010 - 16:53) vital написал(а):
Проблему решил. Быдлокодом наверно, но все-таки) Всем спаибо)

Спустя 42 секунды (24.09.2010 - 16:54) Семён написал(а):
Покажи ради интереса.

Спустя 14 минут, 32 секунды (24.09.2010 - 17:08) vital написал(а):
function hideedits()
{
$("input:text").each(function () {
$(this).replaceWith("<span class=\"input-text\" size=\""+$(this).attr('size')+"\" id=\""+$(this).attr('id')+"\" value=\""+$(this).val()+"\">"+$(this).val()+"</span>");
});
$("#viewbtn").replaceWith("<input type=\"button\" value=\"Править\" id=\"viewbtn\" onclick=\"showedits()\">");
}
function showedits()
{
$(".input-text").each(function () {
$(this).replaceWith("<input type=\"text\" id=\""+$(this).attr('id')+"\" size=\""+$(this).attr('size')+"\" value=\""+$(this).attr('value')+"\">");

});
$("#viewbtn").replaceWith("<input type=\"button\" id=\"viewbtn\" value=\"Предпросмотр\" onclick=\"hideedits()\">");
$("#name").autocomplete("getnames.php", {
width: 260,
selectFirst: false
});
$('#datakonec').datepick();
$('#datanach').datepick();
$('#prikdata').datepick();

}

2 фии.. Думаю все ясно)

Спустя 1 час, 54 минуты, 46 секунд (24.09.2010 - 19:03) vital написал(а):
Ну так хоть какой-нибудь комментарий будет?


_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.