我有一个表格,其中有一个电子邮件和许多其他文本框的文本框。 该电子邮件的功能与先前输入的电子邮件不匹配,但可以为空白。
我在文本框的文本更改事件中解雇了我的代码并且工作正常。 但是当我点击更新按钮而不将光标从文本框中移开时。 单击该按钮不起作用。只有textchange的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();
}
答案 0 :(得分:1)
如果我理解正确,你想要做的就是在按下按钮时触发textChanged事件。
我会将所有textChanged事件逻辑放入一个方法ValidateTextBoxes中,并在textbox textChanged事件和单击按钮单击事件中单独调用它。
如果我误解了你,请告诉我。
编辑: 我不明白手头的问题。 见评论。
答案 1 :(得分:0)
我查看了我遇到此问题的项目,而“hack”是将文本框放在UpdatePanel
内,它似乎适用于大多数情况(我在按钮点击时没有测试火,但他们很少,实际上非常罕见)。
我无法准确说明它为何起作用,我没有一定的或有效的解释,但可能是因为UpdatePanel发出了自己的请求,而表单提交它只是另一个请求。
更进一步,我试图想一想这种行为的解释。看起来TextChanged事件在文本被更改时真的被触发了(搞笑,没有?)。我们希望这个事件在onblur时刻触发,如果是这样的话,即文本改变了,但是当点击其他按钮时,ASP .Net生成的javascript可能会检查文本是否被更改然后提交表单来触发这个事件。按钮点击现在丢失,因为表单无法提交两次。
现在,UpdatePanel带来的是它有责任触发TextChanged事件,因此按钮点击现在照常被激活。