获取文本框光标位置(文本之前或之后)

时间:2012-11-10 17:11:44

标签: javascript jquery dom

如何检查光标位置是在文本的前面还是在文本的最后一个。

<script  type="text/javascript">
    $(document).ready(function () {
        $('input').keyup(function (e) {
            if (e.which == 39 && <CURSOR IS FIRST OR LAST OF TEXT>)  {
                alert($('input').val);
                $(this).closest('td').next().find('input').focus();
                $(this).closest('td').next().find('input').select();
            }
         }
      }
<script>


<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>

<script  type="text/javascript">
$(document).ready(function () {
    $('input').keyup(function (e) {
        if (e.which == 39 && <selected text lenght> > 0)  {
            $(this).closest('td').next().find('input').focus();
            $(this).closest('td').next().find('input').select();
        }
        else if (e.which == 37) {
            $(this).closest('td').prev().find('input').focus();
            $(this).closest('td').prev().find('input').select();
        }
        else if (e.which == 40) {
            $(this).closest('tr').next().find('td:eq(' + $(this).closest('td').index() + ')').find('input').focus();
            $(this).closest('tr').next().find('td:eq(' + $(this).closest('td').index() + ')').find('input').select();
        }
        else if (e.which == 38) {
            $(this).closest('tr').prev().find('td:eq(' + $(this).closest('td').index() + ')').find('input').focus();
            $(this).closest('tr').prev().find('td:eq(' + $(this).closest('td').index() + ')').find('input').select();
        }
    });
});

1 个答案:

答案 0 :(得分:2)

您可以使用jQuery Caret插件。检查this thread herethe plugin's homepage。然后,您可以将代码更改为:

var pos= $(this).caret().start == $(this).caret().end ? $(this).caret().start : -1;
if (e.which === 39 && (pos === 0 || pos === $(this).val().length)) {
...

希望它有所帮助, Shakib