Javascript函数可以与onclick一起使用,但不能与onfocus一起使用

时间:2013-05-29 07:51:16

标签: c# javascript asp.net telerik

我有以下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事件?

3 个答案:

答案 0 :(得分:4)

<强> ASPX

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

或者您可以使用 ClientEvents-OnFocus 属性将该功能设置为@ Blade0rz comment

<强>的JavaScript

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

参考:RadControls for ASP.NET AJAX Documentation

答案 1 :(得分: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

答案 2 :(得分:0)

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