2010-02-04 14 views
5

Załóżmy, że mam Devxpress ASPxTextBox, którego id jest "instrument". Chcę uzyskać dostęp do wartości pola tekstowego po stronie klienta. Więc muszę napisać javascript.Jak uzyskać dostęp do wartości ASPxTextBox z JavaScript

Jeśli to pole tekstowe asp normalne, mógłbym uzyskać pole tekstowe poprzez pisanie kodu jak

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

Ale takie samo podejście nie pracuje dla DevExpress w polu tekstowym.

Jak mogę uzyskać dostęp do ASPxTextBox? Używam Developer Express w wersji 7.2.

Oto fragment kodu dokładniejsze -

<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> 

To był kod ASP. Odpowiedni kod JavaScript jest następujący:

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;    
} 

Odpowiedz

7

Można ustawić właściwość ClientInstanceName w AspxTextBox.

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

stronie klienta:

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 

} 

Dokumentacja DevExpress ma jakieś dość dobre informacje na temat ich skryptów po stronie klienta. Przejdź do tego link, kliknij Reference, a następnie kliknij DevExpress.Web.ASPxEditors.Scripts w menu.

+0

Po prostu zdałem sobie sprawę, że funkcja klienta GetValue() mogła nie być dostępna w Twojej wersji. Jeśli nie, możesz wypróbować MyTextBox.GetText(). – AGoodDisplayName

+0

Nienawidzę rzeczy 'ClientInstanceName'. Działa niezawodnie tylko w przypadku prymitywnych, niezagnieżdżonych kontrolek. Zalecam zamiast tego użycie wyszukiwania ClientID. (Wszystkie kontrolki DX "dodają się" do 'okna' przez ich ID klienta:' okno [theClientId] .SetText (..) ') –

1

Możliwe, że pole tekstowe osoby trzeciej nie korzysta z identyfikatora klienta. Możesz wypróbować UniqueID, ale może to nie być akceptowana globalnie (może nie działać we wszystkich przeglądarkach).

+0

Nie, to nie działa w Firefoksie –

+0

To również nie działa w IE 5.1 ​​ –

+0

ClientID powinny współpracować z kontrolą ASPxTextBox. Dokumentacja produktu wskazuje, że jest ona dziedziczona z TextBox i pozostawiona w spokoju. Jeśli to podejście nie działa, sugerowałbym, że istnieje coś innego, co zapobiega temu. Być może może pomóc dokładniejszy fragment kodu? –

Powiązane problemy