【问题标题】:Javascript function works with onclick but not with onfocusJavascript 函数适用于 onclick 但不适用于 onfocus
【发布时间】:2013-05-24 09:10:36
【问题描述】:

我有以下javascript函数:

function makefieldlonger(element) {
    element.style.width = "550px";

}

我用这样的 RadTextBox 控件来调用它:

<telerik:RadTextBox ID="txtSubject" runat="server" EnableEmbeddedSkins="false"
                                    Skin="Default" Width="255px" onclick="makefieldlonger(this)"/>

这可行,但我希望这发生在 onfocus 事件中,所以我执行以下操作:

<telerik:RadTextBox ID="txtSubject" runat="server" EnableEmbeddedSkins="false"
                                    Skin="Default" Width="255px" onfocus="makefieldlonger(this)"/>

但它拒绝在页面上调整其大小。 它确实调用了 javascript 函数(我通过在函数中添加警报来测试它并被调用)。

所以问题是:为什么这个函数对 onclick 事件有效,而对 onfocus 事件无效?

【问题讨论】:

  • 您的处理程序中this 的值是多少,您可以更改任何其他值(值或背景颜色)吗?
  • 这是在用户控件中,所以我找不到值。

标签: c# javascript asp.net telerik


【解决方案1】:

尝试使用 OnBlur() 函数。您正在更改该文本框的焦点事件上的文本框大小,这可能会导致此错误。使用 Onblur 以便当控制离开时文本框 onblur 将触发并且文本框将被更改

【讨论】:

    【解决方案2】:

    ASPX

    <telerik:RadTextBox ID="txtSubject" runat="server" EnableEmbeddedSkins="false" Skin="Default" Width="255px" >
        <ClientEvents OnFocus="makefieldlonger" />
    </telerik:RadTextBox>
    

    或者您可以使用 ClientEvents-OnFocus 属性将函数设置为@Blade0rz 注释

    JavaScript

    <script type="text/javascript">
        function makefieldlonger(sender, eventArgs)
        {
            sender._element.style.width = "550px";
        }
    </script>
    

    参考:RadControls for ASP.NET AJAX Documentation

    【讨论】:

    • 或替代语法:&lt;telerik:RadTextBox ClientEvents-OnFocus="makefieldlonger" /&gt;
    • 谢谢,这很好用,我之前试过这个但是得到了对象为空的错误,我挖得更深,我发现我需要做以下事情:sender._element.width = "550px";
    • @NickV 用您的发现更新了答案,这将在未来对其他人有所帮助。谢谢
    • @Damith 对不起,我打错了,它必须是“sender._element.style.width”谢谢。
    【解决方案3】:

    看起来OnFocus 需要两个参数。我怀疑你函数中的element 指的是事件参数。

    试试这个(我是ClientEvent):

    <telerik:RadTextBox ID="txtSubject" runat="server" EnableEmbeddedSkins="false" Skin="Default" Width="255px">
        <ClientEvents OnFocus="makefieldlonger" />
    </telerik:RadTextBox>
    

    那么你的功能是:

    function makefieldlonger(sender, eventArgs) {
        sender.style.width = "550px";
    }
    

    取自Telerik RadTextBox Documentation

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 2017-11-22
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      相关资源
      最近更新 更多