HTML to podstawy w dziedzinie tworzenia stron WWW, Style CSS warto opanować, bowiem za ich pomocą można dostosować odpowiednio wygląd swojej witryny WWW. Zagłębiamy się dalej i udostępniamy w tym forum możliwość zadawania pytań o JavaScript.
proton
Posty: 5 Rejestracja: pn lip 09, 2007 3:11 pm
Post
autor: proton » pn lip 09, 2007 3:59 pm
Otóż mam takie pole do wpisania tekstu:
Kod: Zaznacz cały
<textarea class='textbox' name='news_body' rows='8' style='width:300px;'>$news_body</textarea>
Oraz button:
Kod: Zaznacz cały
<input type='button' value='b' class='button' style='font-weight:bold;width:25px' onClick=\"addText('news_body', '<b>', '</b>');\">
No i po kliknięcu w button powinno dodać tekst <b></b> do textarea a tak sie nie dzieje, co najlepsze na innej podstronie mam taki sam kod tylko że zmaist news_body mam body no i wszystko jest tam ok :/
Kod: Zaznacz cały
function addText(elname, wrap1, wrap2) {
if (document.selection) { // for IE
var str = document.selection.createRange().text;
document.forms['inputform'].elements[elname].focus();
var sel = document.selection.createRange();
sel.text = wrap1 + str + wrap2;
return;
} else if ((typeof document.forms['inputform'].elements[elname].selectionStart) != 'undefined') { // for Mozilla
var txtarea = document.forms['inputform'].elements[elname];
var selLength = txtarea.textLength;
var selStart = txtarea.selectionStart;
var selEnd = txtarea.selectionEnd;
var oldScrollTop = txtarea.scrollTop;
//if (selEnd == 1 || selEnd == 2)
//selEnd = selLength;
var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd)
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + wrap1 + s2 + wrap2 + s3;
txtarea.selectionStart = s1.length;
txtarea.selectionEnd = s1.length + s2.length + wrap1.length + wrap2.length;
txtarea.scrollTop = oldScrollTop;
txtarea.focus();
return;
} else {
insertText(elname, wrap1 + wrap2);
}
}
atom
Nowy
Posty: 145 Rejestracja: wt gru 20, 2005 1:55 pm
Kontakt:
Post
autor: atom » czw lip 19, 2007 2:56 pm
Zebrałem Twoj kod do kupy:
Kod: Zaznacz cały
<html>
<head>
<script>
function addText(elname, wrap1, wrap2) {
if (document.selection) { // for IE
var str = document.selection.createRange().text;
document.forms['inputform'].elements[elname].focus();
var sel = document.selection.createRange();
sel.text = wrap1 + str + wrap2;
return;
} else if ((typeof document.forms['inputform'].elements[elname].selectionStart) != 'undefined') { // for Mozilla
var txtarea = document.forms['inputform'].elements[elname];
var selLength = txtarea.textLength;
var selStart = txtarea.selectionStart;
var selEnd = txtarea.selectionEnd;
var oldScrollTop = txtarea.scrollTop;
//if (selEnd == 1 || selEnd == 2)
//selEnd = selLength;
var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd)
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + wrap1 + s2 + wrap2 + s3;
txtarea.selectionStart = s1.length;
txtarea.selectionEnd = s1.length + s2.length + wrap1.length + wrap2.length;
txtarea.scrollTop = oldScrollTop;
txtarea.focus();
return;
} else {
//insertText(elname, wrap1 + wrap2);
}
}
</script>
</head>
<body>
<form name="inputform" action="">
<textarea class='textbox' name='news_body' rows='8' style='width:300px;'>Ola ma kota</textarea>
<input type='button' value='b' class='button' style='font-weight:bold;width:25px'
onClick="addText('news_body', '<b>', '</b>');">
</form>
</body>
</html>
i zadziałało ok (na IE i FF). Zakomentowalem insertText - bo brakuje źródła tej funkcji. Sprawdź u siebie, czy Twoja forma na name="inputform"