Как мне изменить мой код для сбора ввода формы из всплывающего окна и вставить его в текстовое поле в месте расположения курсора на исходной странице с помощью JavaScript? - PullRequest
1 голос
/ 16 июля 2010

JavaScript, показанный ниже, вставляет ввод формы в текстовое поле в текущей позиции курсора. Текстовое поле id = mbentry. Это работает, если весь код находится на одной странице.

Я хочу иметь гипертекстовую ссылку на page1.php, чтобы открыть небольшое всплывающее окно (например, page2.php), чтобы пользователь мог вводить текст во всплывающем окне, закрывать окно и отображать ввод из окна в текстовой области (id = mbentry) на исходной странице. (Примечание. В настоящее время я использую GreyBox для создания всплывающих окон.)

Как мне это сделать? (См. Код ниже)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Page 1</title>

    <script type="text/javascript">
    window.onload = function()
    {
            btn = document.getElementById("btnInsertText");
            myText = document.getElementById("myTextArea");
            title = document.getElementById("insTitle");
            url = document.getElementById("insUrl");
            ltext = document.getElementById("insLText");
            btn.onclick = function()
            {
                insertAtCursor(myText, title.value, url.value, ltext.value);
            }
    }

    function insertAtCursor(myField, title, url, ltext)
    { 
        //IE support 
        if (document.selection)
        { 
            myField.focus();
            sel = document.selection.createRange(); 
            sel.text = '<a href="'+url+'" title="'+title+'" target="_blank">'+ltext+'</a>'; 
        }

        //Mozilla/Firefox/Netscape 7+ support 
        else if (myField.selectionStart || myField.selectionStart == '0')
        {  
            var startPos = myField.selectionStart;
            var endPos = myField.selectionEnd; 
            myField.value = myField.value.substring(0, startPos)+ '<a href="'+url+'" title="'+title+'" target="_blank">'+ltext+'</a>' + myField.value.substring(endPos, myField.value.length);
        }

        else
        { 
            myField.value += myValue; 
        } 
    }       
    </script>

</head>
<body>
url: <input type="text" id="insUrl" /><br />
title: <input type="text" id="insTitle" /><br />
linked text: <input type="text" id="insLText" /><br />
<input type="button" id="btnInsertText" value="Insert Link" /><br /><br />
<textarea id="myTextArea" rows="6" cols="50"></textarea>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 16 июля 2010

Спасибо за вашу помощь.

Мне не удалось заставить его работать с помощью window.parent или top.window (метод GreyBox)После долгих исследований я решил использовать скрытый div, который содержит элементы ввода моей формы.Div появляется при нажатии кнопки «Вставить URL».Поскольку div находится на той же странице, что и текстовая область, мне не нужно передавать информацию.вернуться к родительскому окну больше.Я думаю, что показ и скрытие div с полями ввода пока будет достаточно.Если я найду лучший метод с использованием всплывающего окна GreyBox, я поделюсь им.Еще раз спасибо!

0 голосов
/ 16 июля 2010

Из всплывающего окна вы можете позвонить window.parent.insertAtCursor(...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...