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


Автор: DeMONiZ 30.12.2009, 17:48
Здравствуйте! Я не большой знаток ява но скрипт нужен для админки. Нужен скрипт вроде такого как вот этот на форуме. То есть заполнение такой вот формы разным текстом. 
Привожу пример который удалось написать но он меня не устраивает так как он в одном случае очищает всю форму и вставляет в нее только одно а надо чтоб он вставлял текст(код) в ту область в которой стоит курсор и ни чего не очищал.

вот скрипт:
Код

<script type="text/javascript">
window.onload = function() {
document.getElementById('example').onclick = function() {
document.getElementById('search').value =  this.textContent + this.innerText;
return false;
};
};
</script>
<a href='#' id='example'>&lt;center>&lt;/center></a>


<textarea name="cop" id="search" rows=30 style="width: 800px"></textarea>


Помогите доработать или предложите что либо готовое или свое.

Автор: AntonSaburov 30.12.2009, 18:28
Java и JavaScript - это совершенно не одно и тоже.

Автор: bars80080 30.12.2009, 18:33
ничего не понятно. здесь форму люди руками заполняют

Автор: DeMONiZ 30.12.2009, 19:35
что не понятно? когда тему создаешь тут кнопки код список шрифт и прочее... вот их жмешь и заполняется textarea вот мне и нужно подобное...

Автор: bars80080 30.12.2009, 20:10
извиняюсь, могу послать только к тигру (год как никак)

http://tigir.com/javascript.htm

если поупражняться с      var start = obj.selectionStart; var end = obj.selectionEnd; то станет ясно, как они задаются

Автор: DeMONiZ 30.12.2009, 22:28
ну это понятн о а что ни кто не может предложить скрипт добавления вроде того что я написал но кот орый не затирает текст в форме а добавляет к нему?

Добавлено через 46 секунд
то есть  так сказать модифизировать мой....

Автор: DeMONiZ 30.12.2009, 23:14
Код

<script type="text/javascript">
window.onload = function() {
document.getElementById('example').onclick = function() {
document.getElementById('search').value =  this.textContent + this.innerText;
return false;
};
};
</script>
<a href="#" onclick="document.getElementById('search').value += this.textContent;">&lt;center>&lt;/center></a>
<a href="#" onclick="document.getElementById('search').value += this.textContent;">&lt;b>&lt;/b></a>


<textarea name="cop" id="search" rows=30 style="width: 800px">'



удалось дойти до такого, как сделать вставку туда где стоит курстор, этот вопрос остается актуальным.?!

Автор: bars80080 30.12.2009, 23:17
модифицируй изначально правильный, убери замену, оставь вставку

Автор: DeMONiZ 30.12.2009, 23:22
покажи на примере....если не трудно и если можно...

Автор: bars80080 30.12.2009, 23:58
Код

var BBCode = new Array('','','[i]','[/i]','[u]','[/u]','[align=left]','[/align]','[align=center]','[/align]','[align=right]','[/align]','[list]','\n[/list]','[li]','[/li]');
function insertBBCode(el, n) {
    var bk = document.getElementById('mytext'); if(!bk[0]) { return false; }
    obj = bk[0]; obj.focus();
    var alen = BBCode[n*2].length;
    if(document.selection) {
        var s = document.selection.createRange();
        var len = s.text.length;
        var nText = BBCode[n*2] + s.text + BBCode[n*2 + 1];
        s.text = nText;
        s = document.selection.createRange();
        var df = (len < 1) ? 0 : (len + alen);
        s.moveStart("character", df); s.moveEnd("character", -(alen + 1));
        s.select();
        return true;
    }
    else if(typeof(obj.selectionStart) == 'number') {
        var start = obj.selectionStart;
        var end = obj.selectionEnd;
        var rs = BBCode[n*2] + (obj.value.substr(start,end-start)) + BBCode[n*2 + 1];
        obj.value = obj.value.substr(0,start)+rs+obj.value.substr(end);
        obj.setSelectionRange(start + alen, end + alen);
        return true;
    }
    return false;
}

пользование
Код

<textarea id="mytext"></textarea>
<img src="align_left.gif" onclick="insertBBCode(this, 3);" alt="left" />
<img src="bold.gif" onclick="insertBBCode(this, 0);" alt="bold" />
<img src="underline.gif" onclick="insertBBCode(this, 2);" alt="underline" />
...


Добавлено через 1 минуту и 34 секунды
в массиве BBCode первые два элемента не пустые строки, а [ b] и [ /b] . просто обработчик их похерил

Автор: DeMONiZ 31.12.2009, 09:34
Что то не работает...

Автор: bars80080 31.12.2009, 10:37
ну, а провести минимальную отладку и выкинуть пару лишних нулей?

Код

<html><body>
<style>
textarea { width: 600px; height: 200px; }
.clear { clear: both; }
.bbline span { display: block; float: left; width: 16px; height: 16px; }
</style>
<script type="text/javascript">
var BBCode = new Array('[ b]','[/b]','[i]','[/i]','[u]','[/u]','[align=left]','[/align]','[align=center]','[/align]','[align=right]','[/align]','[list]','\n[/list]','[li]','[/li]');
function insertBBCode(el, n) {
    var bk = document.getElementById('mytext'); if(!bk) { return false; }
    obj = bk; obj.focus();
    var alen = BBCode[n*2].length;
    if(document.selection) {
        var s = document.selection.createRange();
        var len = s.text.length;
        var nText = BBCode[n*2] + s.text + BBCode[n*2 + 1];
        s.text = nText;
        s = document.selection.createRange();
        var df = (len < 1) ? 0 : (len + alen);
        s.moveStart("character", df); s.moveEnd("character", -(alen + 1));
        s.select();
        return true;
    }
    else if(typeof(obj.selectionStart) == 'number') {
        var start = obj.selectionStart;
        var end = obj.selectionEnd;
        var rs = BBCode[n*2] + (obj.value.substr(start,end-start)) + BBCode[n*2 + 1];
        obj.value = obj.value.substr(0,start)+rs+obj.value.substr(end);
        obj.setSelectionRange(end + alen, end + alen);
        return true;
    }
    return false;
}
</script>

<div class="bbline">
<button onclick="insertBBCode(this, 0);">Ж</button>
<button onclick="insertBBCode(this, 1);">Н</button>
<span onmousedown="insertBBCode(this, 2);">П</span>
</div><div class="clear"></div>
<textarea id="mytext" class="ARTFarea" name="field"></textarea>
</div>

</body>
</html>


Автор: DeMONiZ 31.12.2009, 13:14
спасибо.

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