За последние 24 часа нас посетил 18771 программист и 1650 роботов. Сейчас ищут 1738 программистов ...

Открывать только один textarea, другие скрывать.

Тема в разделе "JavaScript и AJAX", создана пользователем Salvat, 15 фев 2017.

  1. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    Добрый день.
    Имеется такой код.
    Код (Javascript):
    1. var edt,smile;
    2.     var prizsmile=0;
    3.     var settings;
    4.    $(document).ready(function (){
    5.        $.post('readsmile.php',{},function(data){
    6.                if (data){
    7.                  smile=data;
    8.                  edt = '<div id="main_div"><div class="veditor"><div class="editor" contenteditable="true"></div>'+
    9.                  '<input style="cursor:pointer" type="submit" value="Отправить"/></div><textarea></textarea>'+
    10.            '<div><img style="cursor:pointer"  title="Смайлы" onclick="show_smile()" src="slug_img/add.png">&nbsp;&nbsp;'+
    11.            '<div id="foto" class="foto">'+
    12.              '&nbsp;&nbsp;&nbsp;<img style="cursor:pointer" title="Фото"  src="slug_img/refresh.png"></div>'+
    13.                    '<div class="smiles">'+smile+'</div></div>';
    14.               }
    15.      });
    16.       settings = {
    17.        url: "upload.php?user_id="+user_id,
    18.          dragDrop: false,
    19.        fileName: "UserFile",
    20.        allowedTypes:"jpeg,gif,bmp,png,jpg",  
    21.        returnType:"json",
    22.        maxFileSize: 3000000,
    23.        showError: true,
    24.        onSuccess:function(files,data,xhr)
    25.       {
    26.           w_isx=data[1]; h_isx=data[2];
    27.           output_dir=data[3];
    28.          
    29.           name=data[0];//files; //data.name;
    30.           koef=w_isx/h_isx;
    31.           pic=name;
    32.           var rand=Math.random();
    33.           var img = new Image();
    34.           pic=output_dir+pic+'?rand='+rand;
    35.           img.src=pic;
    36.           img.onload = function() {
    37.               document.execCommand('insertHTML', false,
    38.                  '<br> <img pic='+pic+' width='+w_isx+' height='+h_isx+' src="'+pic+'"><br>');
    39.               $('.editor').focus();  
    40.          }
    41.      },    
    42.      onError: function (files, status, message)
    43.      {
    44.         alert('status='+status+'files='+files+'message='+message);
    45.      }
    46.    }
    47.  
    48. });
    49. $(function() {
    50.  
    51.     $('span[data-msg]').click(function() {
    52.         var $form = $(this).closest('form');
    53.      
    54.        var p = $form.find('span[data-msg]');
    55.  
    56.    
    57.         if(!p.next('.boxedit').length) {
    58.              $('<div class="boxedit">').insertAfter(p)
    59.                 .append(edt)
    60.            
    61.                  $form.find('textarea').attr('id', 'comment').hide().end()
    62.                 $form.find('.smiles')
    63.                 .on('click', 'img', function() {
    64.                      document.execCommand('insertHTML', false,
    65.                       ' <img sml="'+this.getAttribute('sml')+'" src="'+this.src+'"> ');
    66.                      $('.editor').focus()
    67.                 })
    68.                 .end()
    69.                 .slideDown(300)
    70.                 $form.find('.editor')[0].oninput = function() {
    71.                        $(this).closest('form')
    72.                        $form.find('textarea')
    73.                        .val(this.innerHTML
    74.                           .replace(/&nbsp;/g,' ')
    75.                           .replace(/<br>/g, '\n')
    76.                           .replace(/<img[^>]+>/g, function(i) {
    77.                                                          
    78.                                                          
    79.                               return i.match(/sml="([^"]+)"/)[1]
    80.                         })
    81.                         .replace(/<img[^>]+>/g, function(i) {
    82.                                                          
    83.                 return i.match(/pic="([^"]+)"/)[1]}))
    84.                }
    85.             var uploadObj = $("#foto").uploadFile(settings);              
    86.         }
    87.     })
    88. });
    И формы
    HTML:
    1. <form autocomplete='off' id='form23' onsubmit='return send()' method='post'>
    2.    <p>
    3.     <div style='border: 1px solid #ccc;width:200px'>Текст для комментов</div><br>
    4.      <span id='23'></span>
    5. <input type='hidden' name='formData' value='23'>
    6.     <span data-msg='123'><input id='add_comm'  id-message='23' id-comment='23' type='button' value='23Добавить комментарий'/></span></p>
    7.    <br><br>
    8. </form>  <a href='group_room.php?id=1&group=2
    9.                                            &room=2'>
    10.                                             Название группы: <b></b></a>
    11.                                             <br/><a href='profile.php?id=2'>
    12.                                             <img src='photo/2/avatar/46056184.png ' style='width:100;height:120px;'><br/>Администратор: <b>&nbsp;</b></a><br/>Сообщение: фывафыв<br/>2016-11-12 15:52:20<br/>
    13. <form autocomplete='off' id='form25' onsubmit='return send()' method='post'>
    14.    <p>
    15.     <div style='border: 1px solid #ccc;width:200px'>Текст для комментов</div><br>
    16.      <span id='25'></span>
    17. <input type='hidden' name='formData' value='25'>
    18.     <span data-msg='123'><input id='add_comm'  id-message='25' id-comment='25' type='button' value='25Добавить комментарий'/></span></p>
    19.    <br><br>
    20. </form>
    21.  
    При клике по кнопке "Добавить комментарий" открывается textarea. У всех разные ID, но если у одной формы открыть, а потом у другой. Получается что 2 textarea открытых. Подскажите, как закрывать другие, когда открывается новая?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Можно tooggle из JQuery посмотреть
     
  3. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    @denis01
    Код (Javascript):
    1. for ( prop in props ) {
    2.      value = props[ prop ];
    3.      if ( rfxtypes.exec( value ) ) {
    4.        delete props[ prop ];
    5.        toggle = toggle || value === "toggle";
    6.        if ( value === ( hidden ? "hide" : "show" ) ) {
    7.          continue;
    8.        }
    9.        orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
    10.      }
    11.    }
    Это?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  5. Salvat

    Salvat Новичок

    С нами с:
    4 мар 2016
    Сообщения:
    101
    Симпатии:
    0
    @denis01, спасибо, но мне необходимо именно на моем примере.
    Код (Javascript):
    1. $form.find('textarea').attr('id', 'comment').hide().end()
    Ведь должны закрываться.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Salvat визуально твой пример я не вижу, сколько было времени, на столько и помог