Javascript бол миний бичих хамгийн дургүй скрипт хэл. Яагаад гэдгийг нь энэ скрипттэй эсвэл ajax-тай ноцолдож байсан хүмүүс сайн мэдэж байгаа байх. Гэвч хичнээн зугтаасан ч энэ бичих хэрэг гарчих юм даа. Кирилл гар байхгүй тохиолдолд Болор толийн оруулах талбар дээр кириллээр бичдэг боломжтой болгоод өгөөч гэж гадаад, монгол нийлсэн 10 гаруй имэйл ирсэн тул өнөөдөр дор нь хийчье гэж бодоод суутал хөөрхий нэлээн цаг авчихлаа. (www.bolor-toli.com дээр хийгээд суурилуулчихсан байгаа)
Түүчээний байрлалыг textarea дээр авахдаа дараах кодыг нэлээн удаан сууж байж бичив.

field нь document.getElementById -р авсан textarea юмуу Input text объект.
function processCursor() {
if (document.selection) { // IE…
field.focus();
var sel = document.selection.createRange();
sel.collapse();
var selBefore = sel.duplicate();
var selAfter = sel.duplicate();
sel.moveToElementText(field);
selBefore.setEndPoint(‘StartToStart’,sel);
selAfter.setEndPoint(‘EndToEnd’,sel);
startPos = selBefore.text.length;
endPos = field.value.length – selAfter.text.length;
textBefore = selBefore.text;
textAfter = selAfter.text;
} else { //FF, etc… others are not handled
if (field.selectionStart < field.textLength) { startPos = field.selectionStart; endPos = field.selectionEnd; textBefore = field.value.substring(0,startPos); textAfter = field.value.substring(endPos); } else { startPos = field.selectionEnd; endPos = field.selectionEnd; textBefore = field.value; textAfter = ''; } } }

дээрх функц нь түүчээний байрлалыг авч доторхи бичвэрийг өмнөх болон ардахаар нь 2 хуваачихаж байгаа юм.
Гэтэл энэ нь IE7 дээр лав input box-ын хувьд ажилладаггүй. Алдаа нь Invalid argument selBefore.setEndPoint(‘StartToStart’,sel); агуулж байгаа мөрөн дээр байлаа. Гэтэл энэ нь байх үндэсгүй ба харин өмнөх мөр болох sel.moveToElementText(field); сэжигтэй санагдлаа. IE угаасаа алдааны мөрийг ихэнхдээ буруу тодорхойлдог муу програм. За ингээд сэжиг маань батлагдаж энэ мөрийг тайлбар болгоод үзтэл ажиллаж байв. Гэвч буруу ажиллах нь тодорхой. Ингээд нэлээн сууж байж дээр функцыг

function processCursor() {
if (document.selection) { // IE…
field.focus();
var sel = document.selection.createRange();
var selLength = document.selection.createRange().text.length;
sel.moveStart (‘character’, -field.value.length);
startPos = sel.text.length- selLength;
endPos = sel.text.length;
textBefore = field.value.substring(0,startPos);
textAfter = field.value.substring(endPos);
} else { //FF, etc…
if (field.selectionStart < field.textLength) { startPos = field.selectionStart; endPos = field.selectionEnd; textBefore = field.value.substring(0,startPos); textAfter = field.value.substring(endPos); } else { startPos = field.selectionEnd; endPos = field.selectionEnd; textBefore = field.value; textAfter = ''; } } }

болгон өөрчилж Input text болон textarea 2 хоёулан дээр нь ажилладаг болголоо. Энэ асуудлын талаар Гүүглээр нэлээн хайгаад олоогүй тул блогтоо оруулчихлаа. Хэн нэгэнд хэрэг болж юуны магад.


10 Comments

Zoloogg · 2009/05/18 at 11:30

Саяхан хэрэглэж үзлээ. дажгүй шүү… харин тэр.. үсгийн галиглалтыг өөрөө тодорхойлхоор байж болху?

hatnaa · 2009/05/18 at 20:01

badral ахаа ts буюу ц үсэг үүсэхгүй байна

badaa · 2009/05/18 at 22:26

Bayarlalaa hatnaa! Tiim baina. ц usgiig c-r bichne. Tegeed ts-r mun alternative bichij bolgono gej baigaad martchihaj. Saya zaschihlaa. Odoo ts-r ц-g bichij bolno.

Баярхүү · 2009/05/21 at 22:05

Зөв, хэрэгтэй юм хийж. Даан ч бяцхан гэж бичиж болохгүй байна.

Баярхүү · 2009/05/21 at 23:44

аан болж байна бяц хан гэж бичээд хоосон зайг нь устгавал болж байна. 🙂

Almas · 2009/05/22 at 04:11

FAQ хэсэгт Splash алдаатай байна: \”Please click on it, if this result meets your requirements!\”.

Бас backspace хийгээд а үсгийн араас и үсэг бичихэд хагас и болохгүй байна…

Аа тийм бас http://krilleer.blogspot.com гэж бас байдаг. Тэрэн шиг гарнаас сольж болдог болговол ямар вэ? Бас MVK on off гэдэг их ойлгомжгүй бас хол юмаа. яг бичлэг оруулах цонхны доор ч юм уу байвал дээр биш үү?

badaa · 2009/05/22 at 08:03

Ugaasaa latin->kirill mapping bol perfect shiidel hiih bolomjgui shahuu gej urid ni bi haa negtee bichij baisan sanagdana. Yer ni bol mongol garyn bairlalaar tsewer shiidej bolno. Latin bairlal geheer ch, ts, tsh, geh met combination orj ireed zawaaraad yawchihaj baigaa yum. Gehdee odoo baigaa baidlaar ni bol yaaj iij baigaad zuw kirill ug bicheed tolios haih bolomjtoi ni l bolomjtoi. Uchryg ni olood l bichitsgeechih. 🙂
Backspace-iig shalgana geheer bayarhuugiin jishee awsanaar byatshan geh met ugiig bichihed hundreltei bolchihoj baigaa yum. Tiimees 2 usgiin hoslol bichih gej baigaa bol dund ni space&backspace buu aw. Herwee 2 usgiin hosloloos bolj ug buruu uusej baiwal space&backspace aw. 😉

Almas · 2009/05/22 at 08:21

Харин тэр ч тийм л дээ. Нэгэнт 26:35 болохоор яах аргагүй илүү гараад байдаг. Ер нь нэг мөр шууд Монгол стандарт байрлалтайгаар хийгээд тавьчихмаар юм байна даа. Энэ Болор толь дээрхийг бол. 🙂

Би нэг иймэрхүү байрлал зохиосон юм. Яг Англиар биччихдэггүй ч гэсэн үсэг хувирахгүй, дарсан үсэг л гардаг. Урьд байс ү энэ тэр үсгүүдийг тоон дээр аваачсан нэг юм хийсэн байснаа өөрчлөөд арай гарын доор болгосон юм л даа.

http://blogmn.net/uploads/a/Almas/image1.jpg
http://blogmn.net/uploads/a/Almas/image1b.jpg

Нэгэнт Щ, Ф зэрэг үсгүүд тэр бүр хэрэглэгддэггүй тул нэлээн хол захад байрлуулаад шийдчихсэн юм л даа. Ш үсэг л арай жоохон хол явчихсан. Гэхдээ хуучин Стандарт байрлалтай адилхан байрлалд байгаа болохоор. Иймэрхүү байвал ямар вэ?

Tuguldurbayar · 2009/05/22 at 12:19

badaa ahaa ta oorin mail hayagaaa ogch bolohuu? tanias mail-r asuuh yum bna? Huleej bga shu 😀

Enkhmunkh · 2009/05/23 at 14:50

MVK -г идвэхжүүлэн hereglehed ikh khyalbar yum baina (хэрэглэхэд их хялбар юм байна) гэж зааврыг харалгүй латинаар бичиж үзлээ хялбар байна, Монгол гарын драйвэрыг нэмэхэд бэрхшээлтэй байдаг энгийн хэрэглээтэй хүмүүст маань олзуурхууштай ажил болсон байна. Байнга Alt+Shift хийхээс залхаж байна шүү. Цаашид монгол програмууд маань бас үлгэр жишээ авч хийх байхаа. Амжилт!

Leave a Reply

Your email address will not be published. Required fields are marked *