Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > copy вместо pust


Автор: yu007 6.4.2010, 13:23
Суть скрипта в том, что при выделении текста в textarea появляется div с кнопками, при нажатии на которые выделенный текст вырезается и заносится в соответствующее кнопке поле.
Как изменить функцию cutTxt для третьей кнопки, чтобы она не вырезала выделенный текст, а копировала его? 

Код

<input type="text" name="" id="selTxtInput1" /> 
<input type="text" name="" id="selTxtInput2" />
<input type="text" name="" id="selTxtInput3" />

<div id="hint" onmouseover="flag = true;" onmouseout="flag = false;">
<font class="popupmenu">ввести в поле:</font></br>
<center>
<input type="button" class="button2" value="Автор" onclick="cutTxt('selTxtInput1');" onMouseOver="style.color='#ffcc00'" onMouseOut="style.color='white'" /><br />
<input type="button" class="button2" value="Название" onclick="cutTxt('selTxtInput2');" onMouseOver="style.color='#ffcc00'" onMouseOut="style.color='white'" /><br />
<input type="button" class="button2" value="Ключевые слова" onclick="cutTxt('selTxtInput3');" onMouseOver="style.color='#ffcc00'" onMouseOut="style.color='white'" /><br />
</center>
</div>


Код

<?php
error_reporting(0);
if (isset($_FILES['upload']))
    $upload=file_get_contents($_FILES['upload']['tmp_name']);


$out="<textarea onselect=\"showDiv(this);\" class=\"TxtPopUp\" onmouseup=\"storeCoords(event);\" rows=\"\" id=\"textGl\" name=\"TxtPopUp\" cols=\"\">";
if ($upload)
    $out.=$upload."</textarea>";
else
    $out.="</textarea>";

echo $out;
?>



Код

selObj = null;
      var selTxtRng;
      var coords = {x:0, y:0};
      var selTxt = "";
      function showDiv(sender) {
         if (window.getSelection) {
            selObj = {target: sender, start: sender.selectionStart, end: sender.selectionEnd};
            selTxt = sender.value.slice(selObj.start, selObj.end);
           // setTimeout("brake()", 10);
                     } else {
            selObj = document.selection;
            if (selObj == null) return true;
            selTxtRng = selObj.createRange();
            selTxt = selTxtRng.text;
         }
         var hintDiv = document.getElementById("hint");
         with (hintDiv.style){
            left = (selTxtRng) ? selTxtRng.offsetLeft + "px" : coords.x + "px";
            top = (selTxtRng) ? (selTxtRng.offsetTop - -20).toString() + "px" : (coords.y - 35).toString() + "px";
            display = "block";
            sender.focus();
         }
      }  //end function showDiv(sender)
      function cutTxt(destInput) {
         if (selObj.clear) {
            selObj.clear();
         } else {
            selObj.target.value = selObj.target.value.slice(0, selObj.start) + selObj.target.value.slice(selObj.end);
         }
         delete selObj;
         document.getElementById("hint").style.display = "none";
         document.getElementById(destInput).value += selTxt.charAt(0).toUpperCase() + selTxt.slice(1);
         selTxt = "";
      }  //end function cutTxt(destInput)
      function storeCoords(evnt) {
         var ev = (evnt) ? evnt : event;
         coords.x = (ev.x) ? ev.x : ev.pageX;
         coords.y = (ev.y) ? ev.y : ev.pageY;
      }    //end function storeCoords(evnt)
      function clickHandler(evnt) {
   var ev = (evnt) ? evnt : event;
   var sender = (ev.target) ? ev.target : ev.srcElement;
   while (sender.parentNode != null) {
      if (sender.id == "hint") return true;
      sender = sender.parentNode;
   }
   document.getElementById("hint").style.display = "none";
}

if (window.addEventListener) {
   window.addEventListener("mousedown", clickHandler, false);
} else {
   window.document.attachEvent("onmousedown", clickHandler);
} //end function clickHandler(evnt)



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)