2010-05-20 49 views
0

我在更新面板中有2个asp.net文本框。这两个文本框控件都将一些JavaScript附加到自动标记栏,以便在下一个字段中仅允许数字输入。当我在第一个字段中输入一些数据并按下回车键时,焦点转移到下一个字段,即使我刚进入该字段,第二个字段的requiredfieldvalidator也会显示“* required”错误消息。当我第一次进入文本框时,如何防止验证器发射?ASP.NET必需的字段验证器在Firefox中的焦点上发射

我还应该提到两个文本框都在gridview页脚中。

下面的代码:

<asp:TextBox ID="add_ISBN" runat="server" Columns="14" MaxLength="17" CssClass="focus" /> 
<asp:TextBox ID="add_Qty" runat="server" Columns="4" MaxLength="4" /> 
<asp:RequiredFieldValidator ID="rfvQty" ControlToValidate="add_Qty" ErrorMessage="* required" ForeColor="Red" Display="Dynamic" EnableClientScript="true" ValidationGroup="Add" runat="server" /> 

在代码隐藏:

add_ISBN.Attributes.Add("onkeydown", "return isbnCheck(event, '" & add_Qty.ClientID & "')") 

和JavaScript:

function isbnCheck(e, id) { 
    e = e || window.event; 
    var key = e.which || e.keyCode 

    if (validIsbnChars.indexOf(parseInt(key, 10)) >= 0) { 
     return true; 
    } else { 
     if (key == 13) { 
      var nextfield = document.getElementById(id); 
      if (nextfield) nextfield.focus(); 
      return false; 
     } 
     if (e.preventDefault) e.preventDefault(); 
     e.returnValue = false; 
     return false; 
    } 
} 

JavaScript的只允许字符的有效子集,如果用户按下输入键,将焦点设置到下一个字段。

+0

您需要发布一些标记和脚本,以便我们可以帮助您。 – 2010-05-20 15:55:08

回答

0

我试图通过将javascript附加到onKeyPress事件而不是onKeydown来解决此问题。

add_ISBN.Attributes.Add("onkeydown", "return isbnCheck(event, '" & add_Qty.ClientID & "')") 
2

我不知道为什么这个错误正在发生,但您可以使用client-side validation mini-api创建解决方法。

查找页面上的验证器元素,执行document.getElementById(),然后在您选择字段时将验证器上的isvalid标志设置为true。

或者,您也可以拨打ValidatorEnable(validatorElement, false)在您处于现场时将其禁用,然后在您制定标签时使用ValidatorEnable(validatorElement, true)重新启用它。

+0

谢谢womp。如果事实证明没有其他办法,我可能会这样做。 – 2010-05-20 16:48:30