jQuery关注文本框在使用警报时设置游标,但不是没有它

时间:2013-03-22 13:54:00

标签: jquery cursor focus set alert

在元素上使用focus()时有一些奇怪的问题。 我需要将光标设置在一个单击的位置。我可以获得点击的位置,但我有点困惑,因为我无法在focus()事件中将其设置为此位置。 这是我的代码:

function modify(value, item_ID, attr_NAME, obj_name) {
    var item_id = item_ID;
    var attr_name = attr_NAME;
    $('.ajax').html($('.ajax input').val());
    $('.ajax').removeClass('ajax');
    $(value).addClass('ajax');
    $(value).html(
            '<input id="editbox"' + ' type="text" value="' + $(value).text()
                    + '"/>');


    $('#editbox').focus(function(e) {
        var pos = GetCaretPosition(this);
        alert(pos);
    });


    $('#editbox').keydown(function(event) {
        if (event.which == 13) {
            $(document).attr('helpAttr', false);
            confirmAction(this.value, item_id, attr_name, obj_name);
        }
    });
    $('#editbox').blur(
            function() {
                if ($(document).attr('helpAttr')
                        || ($(document).attr('helpAttr') == undefined)) {
                    confirmAction(this.value, item_id, attr_name, obj_name);
                } else {
                    $(document).attr('helpAttr', true);
                }
            });
}

//Got this from the Internet
function GetCaretPosition(ctrl) {
    var CaretPos = 0; 
// IE Support
    if (document.selection) {
        ctrl.focus();
        var Sel = document.selection.createRange();
        Sel.moveStart('character', -ctrl.value.length);
        CaretPos = Sel.text.length;
    }
    // Firefox support
    else if (ctrl.selectionStart || ctrl.selectionStart == '0')
        CaretPos = ctrl.selectionStart;
    return (CaretPos);
}

对我来说奇怪的是,如果我使用alert(pos),光标将被放置在这个位置。 是否有任何解决方案可以删除警报,因为每次单击文本框时都会出现破坏性信息。 感谢

0 个答案:

没有答案