【问题标题】:PostBack OnTextChanged is triggering when unrelated button is clicked单击不相关的按钮时会触发 PostBack OnTextChanged
【发布时间】:2016-04-01 23:07:43
【问题描述】:

在我的页面上,我有:

  • txtCalendar,一个用于输入日期的asp:TextBox,附带一个JQuery datepicker
  • btnSaveasp:Button 用于保存表单
  • btnAddasp:LinkButton,为页面的不同部分打开一个新表单。

当点击任一按钮时,txtCalendar_TextChanged 被调用btnSave_ClickbtnAdd_Click 函数被调用之前。 txtCalendar_TextChanged 在单击这些按钮时根本不应该被调用 - 在 之前或 之后。

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

另外,我已经验证了:

  • 即使我在回发后阻止 $(function() {} 脚本运行,单击按钮时仍会调用 txtCalendar_TextChanged 方法
  • 我没有任何 JavaScript 来查找 ID #btnSave#btnAdd 或任何可以匹配/响应这些 ID 的内容
  • sender for txtCalendar_TextChanged 是我的 txtCalendar 文本框
  • eventargs for txtCalendar_TextChanged 为空(不确定这是否重要)
  • txtCalendar 中的文本实际上并没有改变(在 UI 中进行了视觉验证,而不是通过在后端添加代码来检查)
  • txtCalendar_TextChanged 在我删除OnTextChanged='txtCalendar_TextChanged'被调用(所以 - 它txtCalendar 调用,不知何故......)
  • 即使我删除了AutoPostBack='true',也会调用txtCalendar_TextChanged
  • 即使我通过注释掉Handles btnSave.Click(两个按钮在aspx.vb 中使用Handles btnX.Click 而不是在aspx 中的OnClick="btnX_Click")禁用btnSave_Click 功能,也会调用txtCalendar_TextChanged
  • Page_LoadtxtCalendar_TextChanged 之前被命中,但第一次检查是 If(Page.IsPostBack) Then Exit Sub - Page_Load 的其余部分没有运行(所以 - 其他后端函数没有被命中)

【问题讨论】:

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


    【解决方案1】:

    已解决:

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

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

    datepickerdateFormat 更改为m/d/yy 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2020-02-20
      • 1970-01-01
      • 2012-01-19
      相关资源
      最近更新 更多