Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Своя кнопка, чтоб работала как тег, в любом месте (https://javascript.ru/forum/dom-window/34961-svoya-knopka-chtob-rabotala-kak-teg-v-lyubom-meste.html)

Zolang 25.01.2013 22:39

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

Хочу сделать кнопку при нажатии на которую она превращала ЛЮБОЙ ТЕКСТ в (ЛЮБОЙ ТЕКСТ) то есть чтоб работала на подобии BB кода и вставить можно было куда угодно.

Есть такая заготовка но она не работает прошу вашей помощи я в этом глупа ))

<script language='javascript' type="text/javascript"> 
function tpl ( ch ) {
if (ch == "Year") {
     document.getElementById('short_story').innerHTML = '()';
}
};
</script>

<input class="bbcodes_poll2" type="button" value="Год" onclick=tpl("Year") />


Заранее спасибо.

danik.js 25.01.2013 23:12

<script language='javascript' type="text/javascript">
function tpl ( ch ) {
if (ch == "Year") {
     var element = document.getElementById('short_story');
     element.innerHTML = ['(', ')'].join(element.innerHTML);
}
};
</script>
 
<div id="short_story">Short Story</div>
<input class="bbcodes_poll2" type="button" value="Год" onclick=tpl("Year") />


Честно говоря не понял что вы хотите сделать. Но ваш код делает то, что должен делать.

Zolang 25.01.2013 23:24

:) надо 9000 новостей такого вида Название фильма ГОД , привести в такой вид Название фильма (ГОД)

Спасибо большое пошла проверять ))

Zolang 25.01.2013 23:33

Спасибо все работает именно с short_story, а вы не могли бы подказать как сделать такое с любым выделенным элементом неважно что я выделила например выделила пример он сделал (пример) выделила другой пример он сделал (другой пример).

danik.js 25.01.2013 23:52

<script>
function tpl ( ch ) {
     var element = document.getElementById('short_story');
     element.innerHTML = element.innerHTML.replace( new RegExp(ch, 'g'), ['(', ')'].join( ch ) );
};
</script>
  
<div id="short_story">выделила пример он сделал (пример) выделила другой пример он сделал (другой пример)</div>
<input class="bbcodes_poll2" type="button" value="Год" onclick="tpl( getSelection() )" />


Можно по регулярке (шаблону) произвести замену, например:

<script>
function tpl ( ch ) {
     var element = document.getElementById('short_story');
     element.innerHTML = element.innerHTML.replace( ch, '($1)' );
};
</script>
  
<div id="short_story">выделила пример 1990 он сделал (пример) выделила  2010г другой пример он сделал (другой пример)</div>
<input class="bbcodes_poll2" type="button" value="Год" onclick="tpl( /([0-9]{4})/g )" />


Не проще ли выгрузить базу сайта (верней нужную таблицу) в sql файл и произвести замену через редактор? Или задача другая стоит?

Zolang 26.01.2013 00:04

Прости меня глупую (( нет ID том поле

<input type="text" name="meta_title" style="width:388px;" class="edit bk" value="">


а если привязываю к id станицы то все даже не выделенные слова обрамляет в скобки (( если есть какой нить вариан я с удовольствием выслушаю.

там чуть другое нужно, нужно руками заполнить поле metatag поле пустое и в него надо скопировать название фильма год и год обрамить в скобки (( Пример

Интерны 8 сезон

а надо

Интерны (8 сезон серии с 1 по 5) (2009)

Deff 26.01.2013 00:19

Zolang,
Тут есть копирование по выделению - отпусканию клавиши мыши
http://javascript.ru/forum/dom-windo...tml#post228571

Zolang 26.01.2013 00:28

Спасибо я правда прочту , просто сейчас наткнулась на статью

Поиск по name: getElementsByName

Метод document.getElementsByName(name) возвращает все элементы, у которых имя (атрибут name) равно данному.

Он работает только с теми элементами, для которых в спецификации явно предусмотрен атрибут name: это form, input, a, select, textarea и ряд других, более редких.

Метод document.getElementsByName не будет работать с остальными элементами типа div,p и т.п.

и отредактировала твой скрипт по аналогии

<script>

function tpl ( ch ) {

     var element = document.getElementByName('meta_title');

     element.innerHTML = element.innerHTML.replace( new RegExp(ch, 'g'), ['(', ')'].join( ch ) );

};

</script>

   
	        <td><input type="text" name="meta_title" style="width:388px;" class="edit bk" value=""></td>
	    
<input class="bbcodes_poll2" type="button" value="Год" onclick="tpl( getSelection() )" />


Но он почему то не работает вроде имя правильно написано.

danik.js 26.01.2013 01:33

<script>
 
function tpl ( ch ) {
 
     var element = document.getElementsByName('meta_title')[0];
     var range = [element.selectionStart, element.selectionEnd].sort();
     var start = range[0], end = range[1];
     
     if (start == end) alert('Надо ченить выделить');

     var value = element.value;
     
     value = value.substring(0, end) + ')' + value.substring(end);
     value = value.substring(0, start) + '(' + value.substring(start);
 
     element.value = value;
};
 
</script>
 
    
<td><input type="text" name="meta_title" style="width:388px;" class="edit bk" value="abcdef"></td>
         
<input class="bbcodes_poll2" type="button" value="Год" onclick="tpl( getSelection() )" />


Обращаю внимание, скрипт работает только в нормальных браузерах, в старье типа Internet Explorer 8 работать не будет.


Часовой пояс GMT +3, время: 12:21.