Pitäisi tehdä funktio joka lisää yhden merkin aktiiviseen "input" kenttään siihen kohtaan missä on tekstiosoitin.
Voisiko joku auttaa
pliiiiiiis....
7734
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 7
Vanhimmat
Niin ja prototypes.js kirjasto on käytössä.
... vähän tarkemmin: laita ne ko. html/js-kohdat ja laita linkki mistä lyötyy prototypes.js.
Tässä on koodi missä merkin lisäys on kovakoodattu a-nimisen input kenttään. Mutta haluan, että se lisäisi merkin siihen kenttään, joka on aktiivinen. Porototype.js löytyy koodissa määrätystä paikasta.
TEST
function char(data) {
document.form.a.value = document.form.a.value data;
}
X
Y
TEST
var active = null; // tarvitaan globaali
function insert_at_cursor(textarea, str)
{
//IE support
if (textarea == null)
return;
if (document.selection) {
textarea.focus();
sel = document.selection.createRange();
sel.text = str;
}
//MOZILLA/NETSCAPE support
else if (textarea.selectionStart || textarea.selectionStart == '0') {
var startPos = textarea.selectionStart;
var endPos = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, startPos) str
textarea.value.substring(endPos, textarea.value.length);
} else {
textarea.value = str;
}
textarea.focus(); //palauttaa fokuksen poista jos huono
}
function set_active(obj) {
active = obj;
}
X
Y
Lisää kursorin kohdalle mutta kursori siirtyy loppuun, enkä tiedä onnistuuko samalle paikalle palautus ... hmm
(insert-funktio löytyi tuolta: http://alexking.org/blog/2003/06/02/inserting-at-the-cursor-using-javascript)
Näyttäisi että tuota käyttäen myös kursorin paikka pysyy: http://alexking.org/blog/2004/06/03/js-quicktags-under-lgpl/
Kursorin position saa asetettua näin (mozilla/firefox)
//MOZILLA/NETSCAPE support
else if (textarea.selectionStart || textarea.selectionStart == '0') {
var startPos = textarea.selectionStart;
var endPos = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, startPos) str
textarea.value.substring(endPos, textarea.value.length);
textarea.focus(); // kursorin position asetus str:n jälkeen
textarea.selectionStart = startPos str.length;
textarea.selectionEnd = startPos str.length;
}
Joku voisi testaa miten IE käyttäytyy tolla aiemalla koodilla. Jaa... Operalla toimii ja käyttää IE-koodia, joten toiminee oikein myös IE:llä.
Tuo toimii loistavasti ainakin Macissa Safarilla.