当我点击其中包含文本的文本字段,并将焦点设置为字符串的结尾时(正如大多数人通常所做的那样),光标的焦点会跳转到字符串的开头。
这只发生在IE中。该应用程序是MVC 2与jquery和javascript。
如何调试此行为?我不能使用firebug,因为这是IE唯一的行为。 IE开发人员工具“脚本”选项卡显示很少甚至没有帮助我调试的信息。
我已经梳理了我们的jquery,并没有因为原因而跳出来。
您在调试此问题时会采取哪些步骤。 CSS会导致这种行为吗?我不这么认为。
可能是它可能是LABEL / INPUT元素布局......这可能是一个肯定的因素。
这是HTML表单。 JavaScript是非常有限的,不会导致这个问题,所以为了突破性我只会显示这个表单片段:
<div>
<span class="field">
<div><label for="Input_Sku" style="width: 130px;">SKU:</label><span class="field"><input id="Input_Sku" name="Input.Sku" type="text" value="" /><span></span></span><p class="message"></p></div>
</span>
</div>
<div>
<span class="field">
<div><label for="Input_ProductName" style="width: 130px;">Product Name:</label><span class="field"><input id="Input_ProductName" name="Input.ProductName" type="text" value="professional" /><span></span></span><p class="message"></p></div>
</span>
</div>
编辑:
以下是Javascript代码,相当有限:
<script>
$(document).ready(function() {
$('#reset').bind('click', function() {$('form').clearForm();});
$(".tbl").tablesorter({ debug: false });
$(".boxname").bind('click', function () {
$('.tog').toggle();$('.a').toggle();$('.b').toggle();
});
$.fn.clearForm = function() {location.reload();};
</script>
脚本引用:
<script src="/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.8.6.custom.min.js" type="text/javascript"></script>
我首先应该做的一个可能的解决方案是通过JS Lint运行页面,然后一次删除一个脚本引用以查看行为是否消失 - 但我在这里采用“建设性的懒惰”方法。 / p>
编辑#2
我使用此代码块尝试了[this post] [1]中的解决方案:
var el = $("#Input_Sku");
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();
}
});
但它只能在中途工作。它会将光标定位到INITIAL FOCUS上字符串的末尾,但在此之后,页面中任何文本字段中的任何类型的单击或光标移动都会使光标跳回到前面!令人沮丧。
我需要开始消除可能导致此问题的脚本;这将是一个巨大的痛苦,但这个错误已成为一个显示阻止 - 所以我变得绝望。