2012-02-13 47 views
5

在文本输入中,如果文本存在,并且您单击以添加更多,则光标会自动跳转到开头。这似乎只发生在IE中。IE:光标跳转到输入开始

我一直googling这一段时间,并试图加载我发现的例子,但似乎没有工作。不幸的是,输入是写在一个我没有控制的jsp,我认为我有这个问题的唯一原因是因为有一些JavaScript硬编码在那里。

<input type="text" id="simpleSearchString" class="text" onfocus="javascript:this.value=this.value.replace(/^\s+|\s+$/g,'')" onblur="javascript:this.value=this.value.replace(/^\s+|\s+$/g,'')" value="" maxlength="255" name="searchCriteria.simpleSearchString"> 

我想要做的就是去除这个跳跃。

我想加入以下代码会帮助,但似乎并没有做任何事情:

jQuery("input#simpleSearchString").focus(); 

我不是100%确定什么开发正试图实现与“JavaScript的:这个.. .etc',但也许我可以找到一种方法去除它。

+0

的正则表达式是从外地剥离前/后的空白。很可能这是导致光标跳转,因为IE假定内容已更改并使旧的光标位置无效。 – 2012-02-13 14:58:12

+0

如何从输入元素中删除'onfocus'和'onblur'?这可以很容易地用jQuery来完成。 – 2012-02-13 15:14:11

+0

谢谢Marc B,我刚发现这个javascript被放置在任何前导/尾随空白影响搜索结果的地方。从jsp我可以看到它使用了一种叫做 Gillian 2012-02-13 15:23:28

回答

2

你可以杀死这些内联事件并插入你自己的;

var el = $("#simpleSearchString"); 
el[0].onfocus = el[0].onblur = null; 

$(el).on("focus blur", function(e) { 
    this.value = $.trim(this.value);  
    if ((e.type === "focus") && this.createTextRange) { 
     var r = this.createTextRange(); 
     r.moveStart("character", this.value.length); 
     r.select(); 
    } 
}); 

(假设它只有IE浏览器,需要用户重新定位插入符号)

+0

工作过!非常感谢。你不知道这是多么恼人。 – Gillian 2012-03-19 15:08:40

+0

嗨,我有同样的问题,并使用此解决方案;它可以避免光标在初始焦点上跳跃,但如果用户在输入内单击,它仍然会跳转到开始位置。你有机会解决这个问题吗? – nocarrier 2012-05-02 16:57:43

+0

这解决了问题,IE会在输入内容后将光标位置更改为索引0,然后再次单击文本框。 – Moulde 2015-01-19 13:06:47