Asp.net mvc 2 第一次制表符按下不';t在MVC2中处理文本框

Asp.net mvc 2 第一次制表符按下不';t在MVC2中处理文本框,asp.net-mvc-2,internet-explorer-8,internet-explorer-7,Asp.net Mvc 2,Internet Explorer 8,Internet Explorer 7,我有多个文本框在IE 7和IE 8中表现出奇怪的行为(但不是IE 9/Chrome): 当我在文本框之间移动焦点(不输入任何字符)、使用tab键或通过鼠标单击时,一切都会按预期进行 在文本框中键入一个字符后,要将焦点切换到下一个文本框,需要按两次tab键或在另一个控件上单击两次鼠标 第一个事件似乎不知何故丢失了 以下是控件的代码: <div class="smpoe-field-container smpoe-div-column-four"> <%=Html.Edi

我有多个文本框在IE 7和IE 8中表现出奇怪的行为(但不是IE 9/Chrome):

  • 当我在文本框之间移动焦点(不输入任何字符)、使用tab键或通过鼠标单击时,一切都会按预期进行
  • 在文本框中键入一个字符后,要将焦点切换到下一个文本框,需要按两次tab键或在另一个控件上单击两次鼠标
  • 第一个事件似乎不知何故丢失了
以下是控件的代码:

<div class="smpoe-field-container smpoe-div-column-four">
   <%=Html.EditorFor(m => m.SegmentNumber, new {model = Model})%>
</div>
<div class="smpoe-field-container smpoe-div-column-four">
   <%=Html.EditorFor(m => m.AmountOrPercent, new {model = Model})%>
</div>
<div class="smpoe-field-container smpoe-div-column-four">
   <%=Html.EditorFor(m => m.RandomLowNumber, new {model = Model})%>     
</div>
补充: 我已经确认可以通过删除指向我的模板的UIHint来修复此问题。为了弄清楚发生了什么,我目前已将InputExtField拆分为以下代码,问题仍然存在:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<div class="smpoe-field-value">
    <%=Html.TextBox("", string.Empty)%>
</div>

有人有什么线索吗?
非常感谢您提供的任何帮助。

通过排除过程,我发现:

$('.smpoe-field-value input,.smpoe-field-value textarea,.smpoe-field-value select').live('change', function() {
  var parentForm = $(this).parents("form:first")[0];
  if(parentForm == undefined)
  parentForm = $(this).parents('.smpoe-entity-identifier')[0];
  if(parentForm == undefined)
  return false;
  jQuery.data(parentForm,"FormUpdated",true);
}); 
返回false会导致在IE 7/8中取消更改,但不会在IE 9或Chrome中取消更改


显然,该例程最初是在IE 7/8之外的浏览器上编写/测试的,在IE 7/8之外的浏览器中,即使返回false,也会出现预期的行为。

您是否尝试禁用CSS和javascript以确认问题不是来自某个自定义规则?我刚刚尝试了一下。禁用CSS或JavaScript都可以解决此问题。这不是我所期望的结果。好吧,至少你已经缩小了你的问题范围。@Darin好吧,你的线索是对的-这都是由一些流氓JavaScript造成的,这些JavaScript干扰了本来不应该出现的地方。感谢您抽出时间发表评论。
$('.smpoe-field-value input,.smpoe-field-value textarea,.smpoe-field-value select').live('change', function() {
  var parentForm = $(this).parents("form:first")[0];
  if(parentForm == undefined)
  parentForm = $(this).parents('.smpoe-entity-identifier')[0];
  if(parentForm == undefined)
  return false;
  jQuery.data(parentForm,"FormUpdated",true);
});