javascript textarea光標(biāo)定位方法(兼容IE和FF)
更新時(shí)間:2011年03月12日 13:17:07 作者:
主要是實(shí)現(xiàn)textarea中光標(biāo)的定位方法,考慮到多瀏覽器的兼容性,需要的朋友可以參考下。
今天在做一個(gè)博客轉(zhuǎn)發(fā)的功能,就像新浪微薄轉(zhuǎn)播的那個(gè)功能一樣,有一個(gè)textArea,就是我們發(fā)微薄的那個(gè)框,別人的微薄都有一個(gè)轉(zhuǎn)發(fā)的按鈕,當(dāng)我們點(diǎn)擊這個(gè)轉(zhuǎn)發(fā)按鈕的時(shí)候,他的微薄就會進(jìn)入到textArea中,看起來很簡單的文本框賦值,其實(shí)難點(diǎn)就在于,這時(shí)候的光標(biāo)是定位在最前面的。
于是搜索了baidu,google,找到了
IE下面的方法
var tea=document.getElementById("文本框的ID");
var txt=textArea.createTextRange();
txt.moveEnd("character",0-tempText.text.length);
txt.select();
但是這個(gè)方法只有在IE的瀏覽器下面才可用,于是通過網(wǎng)絡(luò)搜索找到了一篇博客
google了N久,嘗試了各種方法,大多不是不支持IE就是IE ONLY,最終師父告訴我一個(gè)老頁面里面有這個(gè)功能,找到那段代碼試了下,IE和FF都成功了!
共享一下代碼
function locatePoint(){
var aCtrl = document.getElementById("txtContent");
if (aCtrl.setSelectionRange) {
setTimeout(function() {
aCtrl.setSelectionRange(0, 0); //將光標(biāo)定位在textarea的開頭,需要定位到其他位置的請自行修改
aCtrl.focus();
}, 0);
}else if (aCtrl.createTextRange) {
var textArea=document.getElementById("txtContent");
var tempText=textArea.createTextRange();
tempText.moveEnd("character",0-tempText.text.length);
tempText.select();
}
}
找到了FF下面的方法
var tea=document.getElementById("文本框的ID");
tea.setSelectionRange(0, 0); //將光標(biāo)定位在textarea的開頭,需要定位到其他位置的請自行修改
tea.focus();
所以兼容的方法我們可以用一個(gè)if加入判斷,整合方法如下,也正如那個(gè)帖子里的一樣
html部分
<input id="tea" type="text" size="100" value="">
<button onclick="xx()">轉(zhuǎn)發(fā)</button>
JS部分
<script language="javascript">
var tea = document.getElementById("tea");
function locatePoint(){
if (tea.setSelectionRange) {
setTimeout(function() {
tea.setSelectionRange(0, 0); //將光標(biāo)定位在textarea的開頭,需要定位到其他位置的請自行修改
tea.focus();
}, 0);
}else if (tea.createTextRange) {
var txt=tea.createTextRange();
txt.moveEnd("character",0-txt.text.length);
txt.select();
}
}
function xx(){
tea.value = 'bbb';
locatePoint();
}
</script>
于是搜索了baidu,google,找到了
IE下面的方法
復(fù)制代碼 代碼如下:
var tea=document.getElementById("文本框的ID");
var txt=textArea.createTextRange();
txt.moveEnd("character",0-tempText.text.length);
txt.select();
但是這個(gè)方法只有在IE的瀏覽器下面才可用,于是通過網(wǎng)絡(luò)搜索找到了一篇博客
google了N久,嘗試了各種方法,大多不是不支持IE就是IE ONLY,最終師父告訴我一個(gè)老頁面里面有這個(gè)功能,找到那段代碼試了下,IE和FF都成功了!
共享一下代碼
復(fù)制代碼 代碼如下:
function locatePoint(){
var aCtrl = document.getElementById("txtContent");
if (aCtrl.setSelectionRange) {
setTimeout(function() {
aCtrl.setSelectionRange(0, 0); //將光標(biāo)定位在textarea的開頭,需要定位到其他位置的請自行修改
aCtrl.focus();
}, 0);
}else if (aCtrl.createTextRange) {
var textArea=document.getElementById("txtContent");
var tempText=textArea.createTextRange();
tempText.moveEnd("character",0-tempText.text.length);
tempText.select();
}
}
找到了FF下面的方法
復(fù)制代碼 代碼如下:
var tea=document.getElementById("文本框的ID");
tea.setSelectionRange(0, 0); //將光標(biāo)定位在textarea的開頭,需要定位到其他位置的請自行修改
tea.focus();
所以兼容的方法我們可以用一個(gè)if加入判斷,整合方法如下,也正如那個(gè)帖子里的一樣
html部分
復(fù)制代碼 代碼如下:
<input id="tea" type="text" size="100" value="">
<button onclick="xx()">轉(zhuǎn)發(fā)</button>
JS部分
復(fù)制代碼 代碼如下:
<script language="javascript">
var tea = document.getElementById("tea");
function locatePoint(){
if (tea.setSelectionRange) {
setTimeout(function() {
tea.setSelectionRange(0, 0); //將光標(biāo)定位在textarea的開頭,需要定位到其他位置的請自行修改
tea.focus();
}, 0);
}else if (tea.createTextRange) {
var txt=tea.createTextRange();
txt.moveEnd("character",0-txt.text.length);
txt.select();
}
}
function xx(){
tea.value = 'bbb';
locatePoint();
}
</script>
您可能感興趣的文章:
- 把textarea中字符串里含有的回車換行替換成<br>的javascript代碼
- JS控制文本框textarea輸入字?jǐn)?shù)限制的方法
- javascript textarea字?jǐn)?shù)限制
- TextArea設(shè)置MaxLength屬性最大輸入值的js代碼
- JavaScript判斷textarea值是否為空并給出相應(yīng)提示
- JavaScript中統(tǒng)計(jì)Textarea字?jǐn)?shù)并提示還能輸入的字符
- 在textarea中顯示html頁面的javascript代碼
- JavaScript 獲取/設(shè)置光標(biāo)位置,兼容Input&&TextArea
- 用JavaScript限制textarea輸入長度 (For: IE、Firefox ...)[
- 關(guān)于js對textarea換行符的處理方法淺析
相關(guān)文章
原生javascript實(shí)現(xiàn)連連看游戲
這篇文章主要為大家詳細(xì)介紹了原生javascript實(shí)現(xiàn)連連看游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01ionic2自定義cordova插件開發(fā)以及使用(Android)
這篇文章主要為大家詳細(xì)介紹了ionic2自定義cordova插件開發(fā)以及使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06js與css實(shí)現(xiàn)彈出層覆蓋整個(gè)頁面的方法
這篇文章主要介紹了js與css實(shí)現(xiàn)彈出層覆蓋整個(gè)頁面的方法,分別以實(shí)例形式展示了彈出層覆蓋整個(gè)頁面的css樣式與js控制的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12