2012-01-10 41 views
1

考虑以下几点:如何扩展或更改链中的jQuery聚焦函数?

$("#dataField").focus().autocomplete({ 
     minLength:5, 
     cache:false, 
     source:"${request.contextPath}/ajaxActions/getdata", 
     select:function (event, ui) { 
      populateForm(ui); 
     } 
    }); 

我怎么会改变对焦点等功能,它将把光标在输入的电流值的结束?

回答

1

我没有真正测试过这个,但它应该或多或少地做你需要的。

(function() 
{ 
    var oldFocus = $.fn.focus; 
    $.fn.focus = function(arg1, arg2) 
    { 
     // ======== Call Old Function 
     var result = oldFocus.apply(this, arguments); 

     // ======== Additional Functionality 
     // Logic here to move your cursor 

     return result; // -- this preserves ability to chain 
    } 
})(); 

对于实际移动光标,看到这太问题:move cursor to the beginning of the input field?

+0

非常好的信息非常感谢你!当我测试它虽然没有关注该领域,但一旦我得到它的工作,我会编辑,我们可以勾选它然后 – barrymac 2012-01-10 17:16:46

+0

您可能在我编辑之前复制了代码。特别是调用oldFocus函数的那一行。我现在使用.apply()而不是jQuery的.proxy() - 应该现在工作:) – KOGI 2012-01-10 17:19:09

+0

我真的做了,现在这完美谢谢! – barrymac 2012-01-10 17:24:56

1

$("#dataField").focus(function() { 
     $(this).val($(this.val()); 
}).focus(); 

这种做法是在做this link东西的jQuery的方式,因此应该做你所需要的。

+0

这是一个很好的方法,但在技术上并不是所要求的。这个解决方案创建一个事件处理程序,以便如果焦点被授予元素(由用户或者以编程方式),则光标被移动(在事实之后)。 OP请求一种实际修改focus()方法本身的方法。 – KOGI 2012-01-10 17:16:50

+0

此外,由于浏览器行为的多变性,移动此处使用的光标(设置元素的值)的方法可能从浏览器到浏览器工作,也可能不工作。 – KOGI 2012-01-10 17:17:46

+0

感谢您的贡献,但我必须给予Kogi以维持链接能力的答案 – barrymac 2012-01-10 17:25:53