2010-02-04 39 views
5

Giả sử tôi có một DevExpress ASPxTextBox có id là "công cụ". Tôi muốn truy cập vào giá trị của hộp văn bản ở phía máy khách. Vì vậy, tôi cần phải viết một javascript.Cách truy cập giá trị của một ASPxTextBox từ JavaScript

Nếu đó là một hộp văn bản asp bình thường, tôi có thể đã truy cập vào hộp văn bản bằng cách viết mã như

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

Nhưng phương pháp tương tự là không làm việc cho Text Box của DevExpress.

Tôi làm cách nào để truy cập ASPxTextBox? Tôi đang sử dụng Developer Express phiên bản 7.2.

Dưới đây là một số đoạn mã triệt để hơn -

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

Đó là Mã ASP. Javascript tương ứng như sau:

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

Trả lời

7

Bạn có thể đặt thuộc tính ClientInstanceName trên AspxTextBox.

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

clientside:

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 

} 

Các tài liệu devexpress có một số thông tin khá tốt về kịch bản phía khách hàng của họ. Truy cập vào link này, nhấp vào Tham chiếu, sau đó nhấp vào DevExpress.Web.ASPxEditors.Scripts trên menu.

+0

Chỉ cần nhận ra rằng chức năng khách hàng GetValue() có thể không có trong phiên bản của bạn. Nếu không, bạn có thể thử MyTextBox.GetText(). – AGoodDisplayName

+0

Tôi ghét nội dung 'ClientInstanceName'. Nó hoạt động đáng tin cậy chỉ cho các điều khiển nguyên gốc không lồng nhau .. Tôi khuyên bạn nên sử dụng tra cứu ClientID thay thế. (Tất cả các điều khiển DX "thêm" mình vào 'cửa sổ' bởi ClientId của họ:' window [theClientId] .SetText (..) ') –

1

Có thể hộp văn bản của bên thứ ba không sử dụng ClientID. Bạn có thể thử UniqueID, mặc dù đây có thể không phải là bản sửa lỗi được chấp nhận trên toàn cầu (có thể không hoạt động trên tất cả các trình duyệt).

+0

Không, nó không hoạt động trong Firefox –

+0

Nó cũng không làm việc trong IE 5.1 ​​ –

+0

ClientID nên làm việc với sự kiểm soát ASPxTextBox. Tài liệu sản phẩm cho biết rằng nó được kế thừa từ TextBox và để lại một mình. Nếu cách tiếp cận này không hiệu quả, tôi sẽ đề nghị có một thứ khác trong đó ngăn cản nó. Có lẽ đoạn mã toàn diện hơn có thể giúp ích? –

Các vấn đề liên quan