Copy вместо Pust

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем yu007, 17 апр 2010.

  1. yu007

    yu007 Гость

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

    код JS:
    Код (Text):
    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)
    код формы:
    Код (Text):
    <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>
    код texarea:
    Код (PHP):
    <?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;
    ?>
     
  2. Artem325

    Artem325 Гость

    Попробуйте убрать "delete selObj;" и напишите, получилось ли.
     
  3. yu007

    yu007 Гость

    После удаления "delete selObj;", выделенные слова все равно вырезаются, но в текстовые поля не вставляются..
     
  4. Artem325

    Artem325 Гость

    Тогда попробуйте удалить это: "if (selObj.clear) {
    selObj.clear();
    } else {
    selObj.target.value = selObj.target.value.slice(0, selObj.start) + selObj.target.value.slice(selObj.end);
    }
    delete selObj;"
    Методом "тыка" найдём лишние строки :KillMe: ))
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    ребят, delete selObj; зачем убирать? это ж вызов деструктора.
    нда, программирование методом тыка в потолок)
    зы. скорее всего, угадали с if)))
     
  6. Artem325

    Artem325 Гость

    спасибо=) я в яве не силён, поэтому тыком=)
     
  7. yu007

    yu007 Гость

    Спасибо! Метод тыка себя оправдал)) Все получилось!
     
Загрузка...

Поделиться этой страницей