我有同样的事情,有很多TextBoxes与事件TextChanged设置和使用 AutoPostback = true,适用于所有浏览器(Chrome,Opera,Firefox 3.6),除了IE 8,IE 6/7我没有测试。
我不想将onblur事件放在我的所有TextBox中,因为有许多页面都有许多使用此事件的TextBox。
描述
我正在使用masterPage,
在aspx中我有
<asp:TextBox ID="txtCnpj" runat="server" CssClass="txt" Width="200px"
onkeyup="Mascara(this,Cnpj)" onkeydown="Mascara(this,Cnpj)" MaxLength="18"
AutoPostBack="true" ValidationGroup="txtCnpj"
OnTextChanged="txtCnpj_TextChanged"></asp:TextBox>
在aspx.cs
中 protected void txtCnpj_TextChanged(object sender, EventArgs e)
{
if (CredorInvestimento.GetCredorInvestimento(txtCnpj.Text) != null)
{
((TextBox)sender).Text = "";
((TextBox)sender).Focus();
rfvCnpj.ErrorMessage = "Duplicado";
Page.Validate(txtCnpj.ID);
}
else
txtNome.Focus();
}
谢谢!
ps:我真的不喜欢asp.net我花了更多时间修复错误而不是开发新功能。
ps:对不起我的英语。
ps:如果我删除了onkeydown和onkeyup事件,那么IE中的文本会被触发,但我也是这个事件。
答案 0 :(得分:0)
您是否知道OnTextChanged事件仅在您离开文本框时触发?如果要在KeyUp中触发事件,可以在标记中添加__doPostBack并删除自动后备。
你可以这样使用。
<asp:TextBox ID="txtCnpj" runat="server" CssClass="txt" Width="200px"
onkeyup="Mascara(this,Cnpj); _doPostBack('txtCnpj', '');"
MaxLength="18" ValidationGroup="txtCnpj"
OnTextChanged="txtCnpj_TextChanged"></asp:TextBox>
或者您也可以使用
<asp:TextBox ID="txtCnpj" runat="server" CssClass="txt" Width="200px"
MaxLength="18" ValidationGroup="txtCnpj"
OnTextChanged="txtCnpj_TextChanged"></asp:TextBox>
$('[id$="txtCnpj"]').on('keypress', function () {
Mascara(this, Cnpj);
})