2012-01-22 3 views
1

решаемыхЗаливка с TextArea нажали кнопку кода

http://jsfiddle.net/ArtofLife/u9d9d/

У меня есть несколько TEXTAREA и BUTTON из стороны .. Для вставки строки в текстовом поле, я использовал JQuery плагин (insertAtCaret). Как заполнить ТОЛЬКО последний нажатый TEXTAREA с текстом ...?

<textarea name="answer_text[0]" cols="50" rows="3" style="width: 99%;"> 
    AAA 
</textarea> 

<textarea name="answer_text[1]" cols="50" rows="3" style="width: 99%;"> 
    BBB 
</textarea> 

<textarea name="answer_text[2]" cols="50" rows="3" style="width: 99%;"> 
    CCC 
</textarea> 

<textarea name="answer_text[3]" cols="50" rows="3" style="width: 99%;"> 
    Here should be: 
    &lt;button class=insert name=insert&gt;Insert&lt;/button&gt; 
</textarea> 

<button class=insert name=insert>Insert</button> 

<script type="text/javascript"> 
jQuery.fn.extend({ 
insertAtCaret: function(myValue) { 
    return this.each(function(i) { 
     if (document.selection) { 
      //For browsers like Internet Explorer 
      this.focus(); 
      sel = document.selection.createRange(); 
      sel.text = myValue; 
      this.focus(); 
     } 
     else if (this.selectionStart || this.selectionStart == '0') { 
      //For browsers like Firefox and Webkit based 
      var startPos = this.selectionStart; 
      var endPos = this.selectionEnd; 
      var scrollTop = this.scrollTop; 
      this.value = this.value.substring(0, startPos) + myValue + this.value.substring(endPos, this.value.length); 
      this.focus(); 
      this.selectionStart = startPos + myValue.length; 
      this.selectionEnd = startPos + myValue.length; 
      this.scrollTop = scrollTop; 
     } else { 
      this.value += myValue; 
      this.focus(); 
     } 
    }); 
} 
}); 

var pos = 0; 
$('textarea').click(function() { 
//Get the name of this clicked item 
var pos = $(this).attr("name"); 
$('.insert').click(function() { 
    $('textarea[name^="' + pos + '"]').insertAtCaret('Actual button code'); 
}); 
return false; 
}); 
</script> 

Теперь я получать подал все, что я текстовые области кликал ... http://jsfiddle.net/ArtofLife/u9d9d/15/

Я хочу, чтобы заполнить только последнее текстовое поле, который щелкнул, и не кипящее переменные позы ..

ответ

0

Это потому, что у вас есть обработчик .insertclick внутри обработчика textareaclick. Всякий раз, когда вы нажимаете на textarea, добавляется новый обработчик и он держится, как и когда вы нажимаете на любой textarea. Переместите его за его пределы, он будет работать нормально.

var pos = 0; 
$('textarea').click(function() { 
    //Get the name of this clicked item 
    pos = $(this).attr("name"); 
    return false; 
}); 
$('.insert').click(function() { 
    $('textarea[name^="' + pos + '"]').insertAtCaret('Actual button code'); 
}); 

Demo

+0

Вот полный solutionL http://jsfiddle.net/ArtofLife/u9d9d/ –

Смежные вопросы