如何将光标移动到textarea中的特定单词?

时间:2013-02-18 11:10:02

标签: jquery

在textarea我有跟随线,

hello world. <h2>sub heading</h2>
<img src="" alt="image.jpg"><h3>Test</h3>
More text
<img src="" alt="">

我希望能够单击一个按钮,将光标移动到alt属性,该属性为空。如果有“h”标签,那么它们是否处于正确的顺序。(首先应该有h1标签然后是h2标签)。如果它们不是正确的顺序,则将光标移动到下一个“h”标签。(此示例将光标移动到h2标签)。 在最后光标将移动到最后一个alt属性。然后,如果我再次单击该按钮,光标将再次移动到“h2”标签。 我有以下代码,

<script type = "text/javascript">            
      (function ($, undefined) {
 $.fn.getCursorPosition = function() {
    var el = $(this).get(0);
    var pos = 0;
    if('selectionStart' in el) {
        pos = el.selectionStart;
    } else if('selection' in document) {
        el.focus();
        var Sel = document.selection.createRange();
        var SelLength = document.selection.createRange().text.length;
        Sel.moveStart('character', -el.value.length);
        pos = Sel.text.length - SelLength;
    }
    return pos;
  }
})(jQuery);

function setSelectionRange(input, selectionStart, selectionEnd) {
if (input.setSelectionRange) {
input.focus();
input.setSelectionRange(selectionStart, selectionEnd);
}
else if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
 else if(input.createTextRange){
 var range = elt.createTextRange();
 range.move('character', pos);
  range.select(); 
 }
 }

 function setCaretToPos (input, pos) {
 setSelectionRange(input, pos, pos);
 }

 function nextAlt(input) {
 var current = input.getCursorPosition();
 var search = input.val().substr( ( 0 == current ? 0 : current + 1 ) );
 var pos = current + search.search(/<[a-zA-Z]+(>|.*?[^?]>)/) + 1;
 if (-1 == pos) {
    alert("No elements found");
 } else {
    setCaretToPos(input.get(0), pos);
 }
 }
    </script>
textarea和按钮内的

文本:

 <textarea id="textarea">
 hello world. <h2>sub heading</h2>
 <img src="" alt="image.jpg"><h3>Test</h3>
 More text
 <img src="" alt="">
 </textarea>
 <br>
 <a onclick="nextAlt($('#textarea'));">Next</a>

上面的代码在IE中不起作用(需要跨浏览器)。它将光标移动到不同的标签,但我想在将curosor放到特定的地方之前使用不同的条件。例如, 我想检查标题标签的顺序。如果使用h2和h3,则应检查h1标签并将光标移动到h2标签。然后,如果用户再次点击该按钮,它将移动到alt =“”属性(缺少替代文本)而不是h3标签,因为在h2之后标题标签的顺序是正常的。如果用户再次点击该按钮到达终点,光标将再次返回“h2”标签。 有人可以帮助我。感谢

0 个答案:

没有答案