【问题标题】:onblur is getting called before textbox gets updated在文本框更新之前调用 onblur
【发布时间】:2017-03-24 10:32:12
【问题描述】:

我有一个日期文本框,因此用户可以使用日期选择器选择日期。

我想知道日期是否更改,所以我在文本框中添加了onblur

<asp:TextBox runat="server" ID="txtDate" CssClass="dateonly" Width="80px" onblur="CheckIfDateChanged(this.value)" ></asp:TextBox>

然后在我的 jquery 中我想检查它的日期,所以我添加了一个警报:

function CheckIfDateChanged(date)
{
   alert(date);
}

onblur 似乎在文本框实际随新日期更改之前被调用。因此,如果当前日期是 2016 年 10 月 28 日,而我将其更改为 2016 年 10 月 29 日,则警报显示 2016 年 10 月 28 日。然后在我关闭警报消息后日期会更改。

当他们从日期选择器中选择新日期时,我如何知道日期是否更改?

【问题讨论】:

  • 当您单击input 时,它会获得焦点,然后由于它是一个日期选择器,因此会出现日历并从输入中获取焦点。因此,输入失去焦点并调用 onblur
  • 使用onchange()而不是onblor(),因此每当您的文本框在此之后发生更改时,它都会调用
  • 如果我从日期选择器中选择日期,@BharatPatidar onchange() 将不起作用。如果我在文本框中输入日期,它将被调用

标签: javascript jquery asp.net datepicker


【解决方案1】:

您可以使用onSelect 事件。

$(".dateonly").datepicker({
  onSelect: function(date) {
    display("Date: " + this.value);
  }
});

阅读更多https://api.jqueryui.com/datepicker/#option-onSelect

【讨论】:

    【解决方案2】:

    尝试使用onfocusout

    我自己也遇到过类似的问题。我刚刚在元素属性中添加了onfocusout 以及我想要调用的函数。

    【讨论】:

      【解决方案3】:

      您可以使用textboxonchange 事件。当文本框的值改变时触发此事件。

      <asp:TextBox runat="server" ID="txtDate" CssClass="dateonly" Width="80px" onchange="CheckIfDateChanged(this.value)" ></asp:TextBox>
      

      您可以在 datepciker 的“onSelect”上绑定事件并调用您的函数

      $(".dateonly").datepicker({
        onSelect: function(date) {
          alert(date);
        }
      });
      

      【讨论】:

      • 如果我从日期选择器中选择日期,onchange() 将不起作用。只有当我在文本框中输入日期时才会调用它
      猜你喜欢
      • 2012-04-04
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多