Не давать скрипту "цеплять" поле hidden и img (человеческое объяснение внутри)
Доброго времени суток, У меня есть скрипт редактирующий значения в табличке, т.е. если щёлкнуть на ячейке таблицы то открывается текстовое поле для редактирования значения... Если в ячейке текстовое значение то скрипт меняет его без проблем, но если попадаются теги <img> или <input type="hidden">, то поле для редактирования открывается криво, а теги просто исчезают (ячейка сохраняется без них), можно ли как то заставить скрипт игнорировать эти теги, а при сохранении значения они не удалялись, а оставались в неизменном виде?
Вот код:
jquery(function() { jquery('.izmenenie').click(function(e) { //ловим элемент, по которому кликнули
var t = e.target || e.srcElement; //получаем название тега
var elm_name = t.tagName.toLowerCase(); //если это инпут - ничего не делаем
if(elm_name == 'input') {return false;}
var val = jquery(this).html();
var code = '<input type="text" id="edit" style="width:100%;" value="'+val+'" />';
jquery(this).empty().append(code); jquery('#edit').focus();
jquery('#edit').blur(function()
{ var val = jquery(this).val();
jquery(this).parent().empty().html(val);
tz.innerHTML = kol_na_ed.innerHTML;
});
});
});
А ячейки в таблице могут выглядеть так: <td class="izmenenie">23<input type="hidden" value="23" ></td> //hidden исчезает после изменения <td class="izmenenie">23<img src="images/skrep.jpg "alt="альтернативный текст"></img></td> //img исчезает после изменения <td class="izmenenie">23</td> //работает хорошо, но и тегов здесь нет я так понимаю что нужно икать теги в тексте, но откуда до куда? от< до>? |
замените input на textarea и будет вам счастье.
|
Гробовщик,
:write: вариант ...
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
td{
border: #FF0000 1px solid
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
$.fn.setCursorPosition = function(pos) {
this.each(function(index, elem) {
if (elem.setSelectionRange) {
elem.setSelectionRange(pos, pos);
} else if (elem.createTextRange) {
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
});
return this;
};
$(document)
.ready(function () {
$("td")
.click(function () {
var text = $(this).text(),
html = $(this).html(),
input = $("<input/>", {
"value": text,
"click": function (event) {
event.stopPropagation()
},
"blur": function () {
$(this).parent().html(html.replace(text,$(this).val()))
}
});
$(this).html(input);
input.setCursorPosition(text.length)
});
});
</script>
</head>
<body>
<table>
<tr>
<td>1234<img src="http://javascript.ru/forum/images/smilies/dance3.gif" alt=""></td>
<td>1234<input type="hidden" value="23" ></td>
</tr>
<tr>
<td><img src="http://javascript.ru/forum/images/smilies/dance3.gif" alt="">1234<img src="http://javascript.ru/forum/images/smilies/dance3.gif" alt=""></td>
<td>1234</td>
</tr>
<tr>
<td><img src="http://javascript.ru/forum/images/smilies/dance3.gif" alt="">1234</td>
<td></td>
</tr>
</table>
</body>
</html>
|
| Часовой пояс GMT +3, время: 02:52. |