Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2017, 18:04
Аспирант
Отправить личное сообщение для Salvat Посмотреть профиль Найти все сообщения от Salvat
 
Регистрация: 22.02.2016
Сообщений: 98

Открывать только один textarea, другие скрывать.
Добрый день.
Имеется такой код.
var edt,smile;
 
	var prizsmile=0; 
	var settings;
   $(document).ready(function (){
       $.post('readsmile.php',{},function(data){
      	     if (data){
	 	        smile=data;
	 	        edt = '<div id="main_div"><div class="veditor"><div class="editor" contenteditable="true"></div>'+
	 	        '<input style="cursor:pointer" type="submit" value="Отправить"/></div><textarea></textarea>'+
           '<div><img style="cursor:pointer"  title="Смайлы" onclick="show_smile()" src="slug_img/add.png">&nbsp;&nbsp;'+
           '<div id="foto" class="foto">'+
             '&nbsp;&nbsp;&nbsp;<img style="cursor:pointer" title="Фото"  src="slug_img/refresh.png"></div>'+ 
			       '<div class="smiles">'+smile+'</div></div>';
	 	     }
	 }); 
      settings = {
       url: "upload.php?user_id="+user_id,
	     dragDrop: false,
       fileName: "UserFile",
       allowedTypes:"jpeg,gif,bmp,png,jpg",	
       returnType:"json",
	   maxFileSize: 3000000,
	   showError: true,
	   onSuccess:function(files,data,xhr)
      {
    	  w_isx=data[1]; h_isx=data[2];
		  output_dir=data[3];
		  
		  name=data[0];//files; //data.name;
		  koef=w_isx/h_isx;
		  pic=name;
		  var rand=Math.random();
          var img = new Image();
		  pic=output_dir+pic+'?rand='+rand;
	      img.src=pic;
	      img.onload = function() { 
	          document.execCommand('insertHTML', false,
                 '<br> <img pic='+pic+' width='+w_isx+' height='+h_isx+' src="'+pic+'"><br>'); 
              $('.editor').focus();   
	     }
	 },	 
	 onError: function (files, status, message)
     {
        alert('status='+status+'files='+files+'message='+message);
     }
   }
  
 });
$(function() { 

    $('span[data-msg]').click(function() { 
        var $form = $(this).closest('form');
       
       var p = $form.find('span[data-msg]');

	
 
        if(!p.next('.boxedit').length) { 
		     $('<div class="boxedit">').insertAfter(p) 
	            .append(edt) 
             
			     $form.find('textarea').attr('id', 'comment').hide().end() 
                $form.find('.smiles')
                .on('click', 'img', function() { 
                     document.execCommand('insertHTML', false,
                      ' <img sml="'+this.getAttribute('sml')+'" src="'+this.src+'"> '); 
                     $('.editor').focus() 
                }) 
                .end() 
                .slideDown(300) 
                $form.find('.editor')[0].oninput = function() { 
                       $(this).closest('form') 
                       $form.find('textarea') 
                       .val(this.innerHTML 
                          .replace(/&nbsp;/g,' ') 
                          .replace(/<br>/g, '\n')
                          .replace(/<img[^>]+>/g, function(i) {
                                                           
                                                           
                              return i.match(/sml="([^"]+)"/)[1]  
                        })
                        .replace(/<img[^>]+>/g, function(i) { 
                                                          
				return i.match(/pic="([^"]+)"/)[1]})) 
               }
            var uploadObj = $("#foto").uploadFile(settings);			   
        } 
    }) 
});

И формы
<form autocomplete='off' id='form23' onsubmit='return send()' method='post'> 
   <p>
    <div style='border: 1px solid #ccc;width:200px'>Текст для комментов</div><br>
     <span id='23'></span>
 <input type='hidden' name='formData' value='23'>
    <span data-msg='123'><input id='add_comm'  id-message='23' id-comment='23' type='button' value='23Добавить комментарий'/></span></p>  
   <br><br>
</form>  <a href='group_room.php?id=1&group=2
                                            &room=2'>
                                            Название группы: <b></b></a>
                                            <br/><a href='profile.php?id=2'>
                                            <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/>
<form autocomplete='off' id='form25' onsubmit='return send()' method='post'> 
   <p>
    <div style='border: 1px solid #ccc;width:200px'>Текст для комментов</div><br>
     <span id='25'></span>
 <input type='hidden' name='formData' value='25'>
    <span data-msg='123'><input id='add_comm'  id-message='25' id-comment='25' type='button' value='25Добавить комментарий'/></span></p>  
   <br><br>
</form>

При клике по кнопке "Добавить комментарий" открывается textarea. У всех разные ID, но если у одной формы открыть, а потом у другой. Получается что 2 textarea открытых. Подскажите, как закрывать другие, когда открывается новая?
Ответить с цитированием
  #2 (permalink)  
Старый 16.02.2017, 08:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от Salvat
Подскажите, как закрывать другие, когда открывается новая?
Можно использовать такую "выборку", до показа нужного элемента

$('textarea:visible').hide();

https://jquery-docs.ru/visible-selector/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax запрос срабатывает только один раз из цикла.. SunYang AJAX и COMET 3 30.10.2011 16:01
Выполнить только один раз событие onClick. exBill Events/DOM/Window 3 04.10.2010 23:04
Окно открывается только один раз altermann ExtJS 8 22.04.2010 11:55
Выделить группу чекбоксов. В группе может быть только один чекбокс. JooZ Элементы интерфейса 2 23.12.2009 19:28
Спойлер работает только на один объект на странице. Shanks Общие вопросы Javascript 4 10.05.2009 14:53