我在更新面板中有 2 个 asp.net 文本框。两个文本框控件都有一些 javascript 附加到 autotab 到下一个字段,并且只允许数字输入。当我在第一个字段中输入一些数据并按 Enter 键时,焦点转移到下一个字段,并且第二个字段的 requiredfieldvalidator 显示其“* required”错误消息,即使我刚刚输入了该字段。当我第一次输入文本框时,如何防止验证器触发?
我还应该提到两个文本框都在 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 只允许有效的字符子集,如果用户按下回车键,则将焦点设置到下一个字段。