当单击不相关的按钮时,PostBack OnTextChanged将触发

时间:2016-04-01 23:07:43

标签: javascript jquery asp.net .net vb.net

在我的页面上,我有:

  • txtCalendarasp:TextBox用于输入日期,附带JQuery datepicker
  • btnSaveasp:Button保存表单
  • btnAddasp:LinkButton,可为页面的其他部分打开新表单。

如果点击任一按钮,则在调用txtCalendar_TextChangedbtnSave_Click函数之前调用 {em}。单击这些按钮时,根本不应调用btnAdd_Click - 在之后。

JQuery txtCalendar_TextChanged可能会以某种方式导致这种情况发生 - 当我注释掉实例化datepicker并将其绑定到文本框的代码时,datepicker 不是叫。

此外,我已经确认:

  • 即使我在回发后阻止txtCalendar_TextChanged脚本运行,单击按钮时仍会调用$(function() {}方法
  • 我没有任何能够找到ID txtCalendar_TextChanged#btnSave的JavaScript或任何可以匹配/回复这些ID的内容
  • #btnAdd的{​​{1}}是我的sender文本框
  • {li> txtCalendar_TextChanged txtCalendar为空(不确定这是否重要)
  • eventargs中的文字实际上没有变化(在UI中直观地验证,而不是通过在后端添加代码来检查)
  • 当我删除txtCalendar_TextChanged时,
  • txtCalendar 调用 txtCalendar_TextChanged调用,不知何故...... 。)
  • 即使删除OnTextChanged='txtCalendar_TextChanged' ,也会调用
  • txtCalendar 即使我通过注释掉txtCalendar_TextChanged来禁用AutoPostBack='true'功能,也会调用
  • txtCalendar_TextChanged(两个按钮都使用aspx.vb中的btnSave_Click而不是Handles btnSave.Click在aspx中)
  • Handles btnX.ClickOnClick="btnX_Click"之前被点击,但第一次检查是Page_Load - txtCalendar_TextChanged的其余部分未运行(因此 - 其他后端功能未被点击)

1 个答案:

答案 0 :(得分:0)

解决:

在vb.net中,我使用myDate.ToShortDateStringtxtCalendar中设置初始值。 ToShortDateString格式化日期不带前导零,而datepicker的默认格式确实有前导零

实例化datepicker时,它会更改txtCalendar中的日期格式,但由于这是通过代码完成的,因此不会触发回发。当用户单击按钮并触发回发时,由于新的日期格式(文本字符串已更改),也会触发txtCalendar_TextChanged

datepicker的{​​{1}}更改为dateFormat解决了问题。