learnMedlem sedan jan. 20051 130 inlägg Är det möjligt att, via en knapp, infoga text före och efter en markering i en textbox? Alltså ungefär som här på wF, fast man markerar ordet i texten istället för att mata in ordet i en dialogruta...
Förtydligande: Man markerar ett ord när man skriver ett inlägg. Man ska då kunna klicka på en knapp (t.ex. med namnet "Fet stil"), varvid <strong> infogas före markeringen och </strong> efter.
Någon som har ngt förslag??
Peter SMedlem sedan dec. 20025 483 inlägg Glöm inte att använda funktionen acceptera som slutgiltigt svar när problemet är löst
<script type="text/javascript">
var cPos,
fObj,
ieC = Boolean(document.selection && document.selection.createRange);
function instxt(b, a) {
if (ieC && cPos && cPos.text.length > 0){
cPos.text = b + cPos.text + a;
} else if (window.HTMLTextAreaElement && fObj.selectionEnd - fObj.selectionStart > 0){
fObj.value = fObj.value.substring(0, fObj.selectionStart)
+ b
+ fObj.value.substring(fObj.selectionStart, fObj.selectionEnd)
+ a
+ fObj.value.substring(fObj.selectionEnd);
}
}
function sC() {
cPos = document.selection.createRange().duplicate();
}
window.onload = function() {
fObj = document.forms["vbform"].elements["message"];
if (ieC) {
fObj.onclick = function() { sC(); }
fObj.onkeyup = function() { sC(); }
fObj.onselect = function() { sC(); }
}
}
</script>
<a href="#" onclick="instxt('<strong>','</strong>'); return false;">strong</a>
<form name="vbform">
<textarea cols="20" rows="5" name="message"></textarea>
</form>
learnMedlem sedan jan. 20051 130 inlägg Tack! Funkar bra, förutom att det markerade ordet dubliceras (en kopia av ordet placeras efter den önskade "taggen")... Det vill jag ju inte.. :)
Peter SMedlem sedan dec. 20025 483 inlägg En liten miss av mig. Inlägget ovan är redigerat.
learnMedlem sedan jan. 20051 130 inlägg Riktigt schysst, tackar! Nu vill jag även ha en knapp som öppnar ett dialogfönster och sedan skriver ut det inmatade i samma textarea.. Tacksam för din hjälp!
Peter SMedlem sedan dec. 20025 483 inlägg Like so?
function opendlg(obj){
var w = window.open("about:blank", "dlg", "height=300, width=400");
with (w.document){
open();
write(obj.form.elements["message"].value);
close();
}
}
<form name="vbform">
<textarea cols="20" rows="5" name="message"></textarea>
<button type="button" onclick="opendlg(this)">dlg</button>
</form>
learnMedlem sedan jan. 20051 130 inlägg Nja, man ska inte markera ett ord, utan vad jag menar är ganska precis vad som finns här på wF... kanske var lite otydlig. Alltså det ska vara exakt som tidigare, en länk, och när man trycker på den så ska en dialogbox öppnas och när man matar in ngt och klickar på OK så ska det inmatade skrivas ut i textarean...
Peter SMedlem sedan dec. 20025 483 inlägg Är det en prompt()-ruta du är ute efter? Var skall det inmatade placeras?
learnMedlem sedan jan. 20051 130 inlägg jäpp, fast jag vill inte ha ett popup-fönster. jag vill ha en sån där dialogbox eller vad det kallas. precis som här på wF, när man lägger till ett ord i fet stil etc...
/Red: sorry :)
learnMedlem sedan jan. 20051 130 inlägg precis, confirm heter det ju. det inmatade vill jag ha sist..
Peter SMedlem sedan dec. 20025 483 inlägg :e
Fast det jag menade var inte confirm(), utan prompt().
Peter SMedlem sedan dec. 20025 483 inlägg function opendlg(obj){
var val = window.prompt("Mata in en text", "");
if (val != null && val.replace(/(^\s+)|(\s+$)/g, "").length > 0){
obj.form.elements["message"].value += val;
}
}
learnMedlem sedan jan. 20051 130 inlägg Exakt, fast om jag vill ha en länk som inte ligger inom "form-taggen"... vad ska jag byta ut "this" till etc?
Peter SMedlem sedan dec. 20025 483 inlägg Då kan vi göra så här:
document.forms["namn_på_formulär"].elements["namn_på_<textarea>"].value += val;
learnMedlem sedan jan. 20051 130 inlägg Tack så mkt för hjälpen, nu har jag lärt mig en hel del! :stud
Peter SMedlem sedan dec. 20025 483 inlägg Varsågod!
Jag citerar mig själv: "acceptera som slutgiltigt svar".
learnMedlem sedan jan. 20051 130 inlägg En liten tilläggsfråga:
Nu skapas ju en textsnutt längst ner i textarean. Hur kan man göra så att textsnutten skapas på det ställe som man har musmarkören på, går det?
Sedan så laddas ju sidan om när jag klickat på länken vilket medför att om jag skrivit ett långt inlägg i textarean och en scrollist kommit fram så åker ju scrollen upp till början av textarean, inte så bra.. Kan man göra så att scrollen fortfarande är "nerdragen"??
Tack för hjälpen!
Peter SMedlem sedan dec. 20025 483 inlägg Så?
<script type="text/javascript">
var cPos,
fObj,
ieC = Boolean(document.selection && document.selection.createRange);
function instag(b, a) {
if (ieC && cPos && cPos.text.length > 0){
cPos.text = b + cPos.text + a;
} else if (window.HTMLTextAreaElement && fObj.selectionEnd - fObj.selectionStart > 0){
fObj.value = fObj.value.substring(0, fObj.selectionStart)
+ b
+ fObj.value.substring(fObj.selectionStart, fObj.selectionEnd)
+ a
+ fObj.value.substring(fObj.selectionEnd);
}
}
function insdlgtxt(str){
if (ieC){
if (typeof cPos != "undefined"){
cPos.text = str;
} else {
fObj.value += str;
}
} else if (typeof window.HTMLTextAreaElement != "undefined"){
fObj.value = fObj.value.substring(0, fObj.selectionStart) + str + fObj.value.substring(fObj.selectionEnd);
} else {
fObj.value += str;
}
}
function sC() {
cPos = document.selection.createRange().duplicate();
}
function opendlg(){
var val = window.prompt("Mata in en text", "");
if (val != null && val.replace(/(^\s+)|(\s+$)/g, "").length > 0){
insdlgtxt(val);
}
}
window.onload = function() {
fObj = document.forms["vbform"].elements["message"];
if (ieC) {
fObj.onclick = function() { sC(); }
fObj.onkeyup = function() { sC(); }
fObj.onselect = function() { sC(); }
}
}
</script>
<a href="#" onclick="instag('<strong>','</strong>'); return false;">strong</a>
<form name="vbform">
<textarea cols="20" rows="5" name="message"></textarea>
</form>
<a href="javascript:void(opendlg())">dlg</a>
learnMedlem sedan jan. 20051 130 inlägg Nej, nu tänkte jag på infoga-text-från-prompt... T.ex. Lägga till en länk som här på wF.
Peter SMedlem sedan dec. 20025 483 inlägg I mitt senaste inlägg ovan finns en länk längst ned som promptar för en text. Den texten skall förhoppningsvis läggas till där markören senaste befann sig.