تغییر متن نوشته شده Input Box

D.A.V.O.O.D

Member
سلام
هر چی فکر کردم عنوانی واسه تاپیکم پیدا نکردم :دی

ببینید فرض کنید که یه input داریم توش تایپ می کنیم . یه کدی می خوام که وقتی مثلا وسط نوشته هایی که توی input تایپ کرده ایم کلیک کنیم و بعد روی یه button کلیک می کنیم تا بر فرض مثال داود به همان جایی که انتخابش کردیم اضافه بشه ( نه آخرش ! )

ممنون می شم کمکم کنید
 

AMINMIX

Member
این سوال منم هست ، اما چون توضیحش سخت بود بیخیال شدم ، خوب شد شما پرسیدی :rose:
 

foranyone

Well-Known Member
اینم جواب ، امیدوارم داوود جان با ما آشتی کنه :D

کد:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert Bwtween Text</title>
<style type="text/css">
textarea,body,input{
font-family:Tahoma;
font-size:9pt;
}


</style>

<script type="text/javascript">
if(document.getElementById) {
var getRefById = function(id) {
return document.getElementById(id);
};
} else if(document.all) {
var getRefById = function(id) {
return document.all[id];
};
} else {
var getRefById = function() {
return null;
};
}

function insertText(str) {
var e = getRefById('test'), s = null, r = null;

if(e) {
if((s = document.selection) && s.createRange) {
var repos = false;

/* Element must have focus otherwise text
* will be written into other elements. */
e.focus();
if((r = s.createRange())) {
if(r.text.length) {repos = true;}
r.text = str;
/* Clear the selection to stop continuous
* overwriting of inserted text. */
if(repos && s.empty) {s.empty();}
}
} else {
e.value += str;
}
}
}
</script>
</head>

<body>

<input type="button" onclick="insertText(':)')"  value=":)" />
<input type="button" onclick="insertText(':(')" value=":("  />

<br />
<textarea id="test" cols="50" rows="5"></textarea>

</body>
</html>
 

D.A.V.O.O.D

Member
سلام
می گم اسمت رو نمی دونم ، foranyone عزیز مگه ما با هم قهریم که بخوایم با هم آشتی کنیم ؟ :)
ممنون از کدت ، اما توی فایر فوکس جواب نداد ، یکم روش کار می کنم ببینم میشه توی فایر فوکسم سازگارش کرد یا نه !؟

منونم از کمکت
 

eAmin

Well-Known Member
سلام.

تابع insertText رو به اینصورت تغییر بدید:
کد:
function insertText(str) {
var e = getRefById('test'), s = null, r = null;

if(e) {
    if((s = document.selection) && s.createRange) {
        var repos = false;

        /* Element must have focus otherwise text
         * will be written into other elements. */
        e.focus();
        if((r = s.createRange())) {
            if(r.text.length) {repos = true;}
                r.text = str;
            }
        } else {
            var start = e.value.slice(0, e.selectionStart);
            var end = e.value.slice(e.selectionStart);
            e.value = start + str + end;  
        }
    }
}
 
آخرین ویرایش:

D.A.V.O.O.D

Member
ممنون امین جان ، درست شد .
فقط میشه لطف کنی بگی که توی مرور گرهای معروف مثل فایرفوکس ، اپرا ، اینترنت اکسپلورر ، کروم ، سفری چه ورژن به بالایی این تابع را ساپورت می کنند ؟
 

eAmin

Well-Known Member
من اینو با اپرا 9.64 ، سافاری 4 beta و FF 3.5 و همچنین IE 8 امتحان کردم بدرستی کار می کرد.
توی کروم هم به احتمال زیاد باید جواب بده و همچنین ie6. متاسفانه کروم نصب نیست فعلا و امتحان نشده. به ورژنهای پایین تر تمامی بروزرهای گفته شده دسترسی ندارم.
 

D.A.V.O.O.D

Member
من اینو با اپرا 9.64 ، سافاری 4 beta و FF 3.5 و همچنین IE 8 امتحان کردم بدرستی کار می کرد.
توی کروم هم به احتمال زیاد باید جواب بده و همچنین ie6. متاسفانه کروم نصب نیست فعلا و امتحان نشده. به ورژنهای پایین تر تمامی بروزرهای گفته شده دسترسی ندارم.

اره من خودم توی جدیدترین ورژن این مرورگر ها تستش کردم ، از ورژن های پایین تر خبر ندارم !
می ترسم توس سایتم ازش استفاده کنم و طرف مرورگرش قدیمی باشه و ...

از بچه ها کسی نیست که ورژن قدیمی این مرورگر ها روی سیستمش نصب باشه ؟ ممنونم می شم یه تستی بزنید :rose:
 

جدیدترین ارسال ها

بالا