2013-05-29 28 views
2

我有以下的javascript函數:JavaScript功能上用onclick但與聚焦狀態

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事件?

+0

採取什麼的'this'的價值你的處理程序,你能改變任何其他的值(值或背景顏色)嗎? –

+0

這是在用戶控件中,所以我找不到價值。 –

回答

4

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> 

REF:RadControls for ASP.NET AJAX Documentation

+1

或者其他的語法:'' – CodingIntrigue

+0

謝謝,這工作得很好,我以前試過,但得到的對象是空的錯誤,我挖得更深,我發現我需要做以下事情: sender._element.width =「550px」; –

+0

@NickV更新的答案與您的發現,這將有助於未來的其他人。謝謝 – Damith

0

嘗試使用OnBlur()函數。您正在更改可能導致此錯誤的文本框的焦點事件上的文本框大小。使用的onblur因此,當控制離開的onblur將火和文本框將得到改變

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