Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.09.2013, 12:03
Профессор
Отправить личное сообщение для Гробовщик Посмотреть профиль Найти все сообщения от Гробовщик
 
Регистрация: 10.03.2013
Сообщений: 169

Не давать скрипту "цеплять" поле 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> //работает хорошо, но и тегов здесь нет

я так понимаю что нужно икать теги в тексте, но откуда до куда? от< до>?

Последний раз редактировалось Гробовщик, 23.09.2013 в 13:06.
Ответить с цитированием
  #2 (permalink)  
Старый 23.09.2013, 15:56
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

замените input на textarea и будет вам счастье.
Ответить с цитированием
  #3 (permalink)  
Старый 23.09.2013, 20:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Гробовщик,

вариант ...
<!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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск