【问题标题】:Select the changes of a textbox that was disabled from code behind in jQuery选择从 jQuery 后面的代码中禁用的文本框的更改
【发布时间】:2015-09-14 15:54:00
【问题描述】:

我有一个带有asp:textBox 的页面。 在页面加载中(VB.net)后面的代码中,根据这些过滤器,我将以这种方式启用/禁用此asp:textBox

this.txtB.Enabled = true;
this.txtB.Enabled = false;

在用户更改此asp:Textbox 的上下文的那一刻(仅当它启用时)我想做一些事情,所以我想以这种方式使用 jQuery:

 $('.txtB:enabled').on("propertychange input paste", function () { ... });

问题在于,在某些情况下,一开始禁用的文本框也必须启用。我总是在 jQuery 中这样做:

$(".txt_PISocAppNom").prop('disabled', false);

但是在这种情况下,当用户更改文本框的上下文时,之前的方法没有捕捉到更改。

我认为问题源于我在后面的代码中设置了 ENABLE 属性,而在 jQuery 中设置了 DISABLE 属性。

我不知道我的假设是否正确,在这种情况下如何更改代码以使其工作。

【问题讨论】:

  • 你能提供一个渲染 HTML 的小提琴吗?

标签: javascript jquery asp.net vb.net


【解决方案1】:

您是否尝试过使用“live”而不是“on”?

$('.txtB:enabled').live("propertychange input paste", function () { ... });

如果您的文本框在开始时被禁用,则选择器 '.txtB:enabled' 将不适用于它,因此更改事件不会附加到它。使用“live”将确保事件也被附加到未来的元素中。

'live' 在新版本的 jquery 中已被弃用。在 jquery 1.7+ 中,您还可以使用 $('.parentB').on("propertychange input paste", ".txtB:enabled", function () { ... }); 来获得与“live”相同的结果。我使用 '.parentB' 作为选择器来获取文本框的父级。

【讨论】:

    【解决方案2】:

    问题是我插入了

     $(".txtB:enabled").on("propertychange input paste", function () { ... });
    

     $(document).ready(function () { ... });
    

    在这种情况下,它在早期阶段仅对那些已启用的项目进行了攻击。所以,如果我的文本框一开始被禁用,后来才启用,它就没有 .on(...) 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2014-07-03
      相关资源
      最近更新 更多