View Full Version : بدست آوردن مقدار سلکت شده در تکست باکس
tabib_m
چهارشنبه 09 فروردین 1385, 19:19 عصر
سلام
فرضا یک تکست باکس (و یا یک تکست اریا) داریم، کاربر میاد یک متنی رو از توی اون سلکت میکنه
چجوری میتونیم به اون متن دسترسی پیدا کنیم؟
pooyanm
جمعه 11 فروردین 1385, 11:58 صبح
salam
این سوال برای من هم جالب بود و باعث شد همه attribute های htmlو توابع javascript رو مرور کنم. متاسفانه شما تنها می تونید متوجه شوید که copy, cut, و paste شده و یا منو باز شده اما دسترسی به selection ممکن نیست. اگر ممکنه کاربرد این نیازتان را بگویید شاید راه حل دیگری مثلا با AJAX برای اون پیدا کنم.
pooyanc@yahoo.com
<textarea
onbeforecopy="alert('beforecopyevent');"
oncopy="alert('copy event');" oncut="alert('cut event');"
onselect="alert('select event');" onselectstart="alert('selectstart event');"
oncontextmenu="alert('oncontextmenu event');"
>
Hi, Select this text!
</textarea>
tabib_m
جمعه 11 فروردین 1385, 20:19 عصر
راستش رو میخواید ، من میخوام یه editor مثل ادیتور همین سایت درست کنم. یعنی یک سری کلید بذارم مثل کلید (B) و بعد اگه کاربر عبارتی رو سلکت کرده باشه و این کلیدها رو بزنه ، دور و بر اون عبارت سلکت شده رو کد بذارم.
من این فکر به نظرم رسید. شاید راه بهتر و اصلی راه دیگه ای باشه. اگه میتونید راهنماییم کنید ممنون میشم.
pooyanm
یک شنبه 13 فروردین 1385, 04:18 صبح
سلام
همون طور که گفتم شما نمی تونید متن textarea را بدست آورید ولی ویرایشگرهای WYSIWYG همه متن
انتخاب شده را از صفحه اصلی ویا یک iframe که textarea هم در آن قرار میگیرد بدست می آورند.
WYSIWYG editor code راهم می تونید توی گوگل جستجو کنید.
<script>
function getSelectedText(doc) {
if (typeof(doc) == 'undefined' || doc == null) {
doc = window.document;
}
var selection = false;
if (doc.selection && doc.selection.createRange) {
selection = doc.selection.createRange().text;
}
else if (typeof(doc.selectionStart) != 'undefined') {
selection = doc.value.substr(doc.selectionStart, doc.selectionEnd - doc.selectionStart);
}
else if (window.getSelection) {
selection = '' + window.getSelection();
}
return selection;
}
</script>
<a onMouseDown="alert('Your selected text:\n\n' + getSelectedText(document));"
style="font-weight:bold;cursor:pointer;">B</a>
<br>
<textarea cols=31 rows=10>This is a WYSIWYG editor!
This is a WYSIWYG editor!
This is a WYSIWYG editor!
This is a WYSIWYG editor!</textarea>
tabib_m
یک شنبه 13 فروردین 1385, 17:08 عصر
سلام
خیلی ممنون
در مورد دست کاری چی؟ دستکاریش میتونم بکنم؟
یعنی متنی که سلکت شده رو تغییر بدم. به عبارتی دیگر ، دو طرف متن سلکت شده کد بذارم.
pooyanm
سه شنبه 15 فروردین 1385, 01:28 صبح
سلام، این کد هم برای انجام بقیه کار:
<script>
function boundSelection(doc, tagName) {
if (typeof(doc) == 'undefined' || doc == null) {
doc = window.document;
}
var selection = false;
if (doc.selection && doc.selection.createRange) {
selection = doc.selection.createRange();
selection.text = '<' + tagName + '>' + selection.text + '</' + tagName + '>';
}
else if (typeof(doc.selectionStart) != 'undefined') {
var s = '<' + tagName + '>' + doc.value.substr(doc.selectionStart, doc.selectionEnd - doc.selectionStart) + '</' + tagName + '>';
var t = doc.getElementById('mytextarea').value;
var t0 = t.substr(0, selectionStart);
var t1 = t.substr(selectionEnd, t.length);
doc.getElementById('mytextarea').value = t0 + s + t1;
}
else if (window.getSelection) {
throw 'not implemented for this browser';
}
}
</script>
<br>
<a onMouseDown="boundSelection(document, 'b');"
style="font-weight:bold;cursor:pointer;">B</a>
<br>
<textarea id=mytextarea cols=31 rows=10>This is a WYSIWYG editor!
This is a WYSIWYG editor!
This is a WYSIWYG editor!
This is a WYSIWYG editor!</textarea>
tabib_m
سه شنبه 15 فروردین 1385, 14:37 عصر
خیلی ممنون. :)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.