2010-02-04 81 views
5

假設我有一個DevExpress ASPxTextBox,其ID是「instrument」。我想訪問客戶端文本框的值。所以我需要寫一個JavaScript。如何從JavaScript訪問ASPxTextBox的值

如果這是一個正常的asp文本框,我可以通過編寫代碼就像

var instrumentElement = document.getElementById('<%=instrument.ClientID%>')

但同樣的辦法是行不通了的DevExpress的文本框訪問該文本框。

如何訪問ASPxTextBox?我正在使用Developer Express版本7.2。

下面是一些更深入的代碼片斷 -

<div style="display: inline; float: left;"> 
    <dxe:ASPxTextBox ID="InstrumentQuantity" runat="server" Width="170px"> 
    </dxe:ASPxTextBox> 
</div> 

<div style="display: inline; float: left;" onclick="incOrDecQty(0);"> 
    <asp:ImageButton ID="decrementQuantity" runat="server" 
      Height="16px" Width="16px" ImageUrl="~/images/left.png" 
      AlternateText="Decrease Quantity" PostBackUrl="javascript:void(0);"/> 
</div> 

<div onclick="incOrDecQty(1);"> 
    <asp:ImageButton ID="incrementQuantity" runat="server" 
      AlternateText="Increase Quantity" ImageUrl="~/images/right.png" 
      Height="16px" Width="16px" PostBackUrl="javascript:void(0);" /> 
</div> 

這是ASP代碼。相應的Javascript如下:

function incOrDecQty() 
{ 
    var element = document.getElementById('<%=InstrumentQuantity.ClientID%>'); 
    var lotSize = parseInt(document.getElementById('<%=LotSize.ClientID%>') 
     .innerHTML, 10); 
    var currentValue = parseInt(element.value,10); 

    if(arguments[0] == 1) 
     currentValue += lotSize; 
    else if((currentValue - lotSize) >= 0) 
     currentValue -= lotSize; 

    element.value= currentValue;    
} 

回答

7

您可以在AspxTextBox上設置ClientInstanceName屬性。

<dxe:ASPxTextBox ID="InstrumentQuantity" 
runat="server" Width="170px" 
ClientInstanceName="MyTextBox"> 
</dxe:ASPxTextBox> 

客戶方:

function DoSomething() 
{ 
    var theText = MyTextBox.GetValue(); //GetValue() is the DevExpress clientside function 

    MyTextBox.SetValue('this is the value i want to use'); //Sets the text 

} 

的DevExpress的文檔,對他們的客戶端腳本一些非常好的信息。轉到此link,單擊參考,然後單擊菜單上的DevExpress.Web.ASPxEditors.Scripts。

+0

剛剛意識到GetValue()客戶端功能可能不在您的版本中。如果不是,您可以嘗試MyTextBox.GetText()。 – AGoodDisplayName 2010-02-05 22:54:37

+0

我討厭'ClientInstanceName'的東西。它只對原始的非嵌套控件可靠地工作..我建議使用ClientID查找。 (所有的DX控件都通過它們的ClientId:'window [theClientId] .SetText(..)'「將它們自己添加到'window'' – 2012-08-28 22:53:39

1

有可能第三方文本框不使用ClientID。你可能會嘗試UniqueID,雖然這可能不是全球可接受的修復程序(可能不適用於所有瀏覽器)。

+0

不,它沒有在Firefox – 2010-02-04 15:51:18

+0

工作,它也沒有在IE瀏覽器5.1客戶端ID – 2010-02-04 15:57:18

+0

應與ASPxTextBox控制工作。產品文檔指出它是從TextBox繼承而來的。如果方法不起作用,我會建議那裏有其他的東西在阻止它。也許更徹底的代碼片段可能有幫助? – 2010-02-04 15:59:20