我有一个表单,其中有一个用于电子邮件的文本框和许多其他文本框。
该电子邮件具有与先前输入的电子邮件不匹配的功能,但可以为空白。
我在文本框的文本更改事件处触发了代码,并且工作正常。
但是,当我单击更新按钮而没有将光标从文本框移开时。
单击该按钮不起作用。仅文本框的textchanged事件触发其他事件。
请同样帮我。
string emailid = txtemail.Text;
var emailcnt2 = (from r in context.Customers
where r.Email == Convert.ToString(emailid)
select r).SingleOrDefault();
if (emailcnt2 != null)
{
lblemail.Text = "Email already exists for customer " + emailcnt2.FirstName + " " + emailcnt2.LastName + "";
// emaildisplay.Attributes.Add("style", "display:block;");
txtemail.Focus();
}
最佳答案
我查看了出现此问题的项目,“ hack”是将文本框放在UpdatePanel
内,似乎在大多数情况下都可以使用(当按钮单击不触发时,我进行了测试,但是很少,实际上非常罕见)。
我不能确切地说出它为什么起作用,我没有一个确定或有效的解释,但是可能是因为UpdatePanel发出了自己的请求,而表单提交只是另一个请求。
进一步讲,我正在尝试对这种行为进行解释。似乎在更改文本时会触发TextChanged事件(搞笑,不是吗?)。如果是这种情况,即文本已更改,我们希望此事件在onblur时刻触发,但是当单击其他按钮时,可能由ASP .Net生成的javascript检查文本是否更改,然后提交表单以触发此事件事件。现在,单击按钮已丢失,因为不能两次提交表单。
现在,UpdatePanel带来的是它有责任触发TextChanged事件,因此现在照常触发了按钮单击。
关于c# - 事件未触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9837527/