如何从JavaScript访问ASPxTextBox的值

时间:2010-02-04 15:22:57

标签: asp.net devexpress

假设我有一个DevExpress ASPxTextBox,其id为“instrument”。我想访问客户端文本框的值。所以我需要写一个javascript。

如果它是一个普通的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;            
}

4 个答案:

答案 0 :(得分:7)

您可以在AspxTextBox上设置ClientInstanceName属性。

<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

}

devexpress文档在客户端脚本上有一些非常好的信息。转到此link,单击Reference,然后单击菜单上的DevExpress.Web.ASPxEditors.Scripts。

答案 1 :(得分:2)

答案 2 :(得分:1)

第三方文本框可能没有使用ClientID。您可以尝试使用UniqueID,但这可能不是全局可接受的修复(可能不适用于所有浏览器)。

答案 3 :(得分:0)

这种获取客户端 DevExpress ASPxClientTextBox 的方法对我有用:

<块引用>

var dxc = ASPxClientControl.GetControlCollection().GetByName("ASPxTextBoxClientInstanceName");

基于解决方案:https://javascript.developreference.com/article/14283677/JavaScript+dynamic+variable+Method+call