Постановка задачи
Имеем профиль пользователя, при клике на например имени оно превращается в текстовое поле, где его можно отредактировать. Редактируем, жмакаем в конце "изменить" и изменения сохраняются
Алгоритм
На данный момент предполагаю слой А, в который динамически (посредством jquery) будет вписываться слой Б и в зависимости от состояния некоторой логической переменной будет отображаться либо, например
HTML |
<div class='field'><div style="display: block;">Вася</div><input type='hidden' name='firstname' value='Вася' /></div> |
либо
HTML |
<div class='field'><div style="display: none;">Вася</div><input type='text' name='firstname' value='Вася' /></div> |
Собственно проблема
При попытке
HTML |
$(".field").click(function(){ $(this).find("input:last-child").attr("type", "text"); }); |
firebug выдаёт ошибку uncaught exception: type property can't be changed, а ослик пишет нечто вроде "исключение брошено, но не поймано" 
Что делать и вообще, мб есть более приемлимые алгоритмы этого всего
З.Ы. С jquery начал знакомиться сравнительно недавно, так что решение было бы полезно и в общеобразовательных целях Спустя 16 минут, 1 секунда (4.11.2009 - 22:11) vasa_c написал(а):
вместо type="hidden" -> type="text" делать style="display:none" -> style=""
Спустя 24 минуты, 27 секунд (4.11.2009 - 22:36) kirik написал(а):
Тип у поля нельзя менять. Ты можешь создать нужный элемент, унаследовать от него все остальные атрибуты (имя, значение...), и заменить им оригинальный (точнее вставить его после оригинального, который после - удалить).
Посмотри, если нужно,
вот и
вот (jquery) готовые штуки.
Спустя 9 минут, 56 секунд (4.11.2009 - 22:46) bret написал(а):
Спасибо, посмотрю , хотя готовому решению препочёл бы собственную мозголомку
Цитата (Javascript Inline Editor) |
Step 3 There is no Step 3! |
- это здорово
Спустя 4 дня, 20 часов, 38 минут, 54 секунды (9.11.2009 - 19:25) Romms написал(а):
я в jQuery - не очень шарю... но я бы єто всю сделал через inerHTML
пример:
<html>
<head>
<script type="text/javascript">
<!--
var status='no';
function qwe(id)
{
if (status=='no')
{
document.getElementById(id).innerHTML =
'<input type="text" value="'+document.getElementById(id).innerHTML+'" onBlur="ewq(\'input_\',\'input11\')" id="input11" />';
status='yes';
}
}
function ewq(id,idi)
{
if (status=='yes')
{
document.getElementById(id).innerHTML =
document.getElementById(idi).value;
status='no';
}
}
-->
</script>
</head>
<body>
<span id="input_" onclick="qwe('input_')">VASYA TIMUR</span>
</body>
</html>
Приблизительно
_____________
Бывает, ты ешь медведя, а бывает, что медведь ест тебя (с)