Asp.net 如何从JavaScript访问ASPxTextBox的值

Asp.net 如何从JavaScript访问ASPxTextBox的值,asp.net,devexpress,Asp.net,Devexpress,假设我有一个id为“instrument”的DevExpress aspxtbox。我想访问客户端文本框的值。所以我需要写一个javascript 如果它是一个普通的asp文本框,我可以通过编写代码来访问文本框,如var instrumentElement=document.getElementById(“”),但同样的方法不适用于DevExpress的文本框 如何访问aspxtbox?我使用的是Developer Express 7.2版 下面是一些更完整的代码片段- <div styl

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

如果它是一个普通的asp文本框,我可以通过编写代码来访问文本框,如

var instrumentElement=document.getElementById(“”)


,但同样的方法不适用于DevExpress的文本框

如何访问aspxtbox?我使用的是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;            
}
函数incOrDecQty()
{
var元素=document.getElementById(“”);
var lotSize=parseInt(document.getElementById(“”)
.html,10);
var currentValue=parseInt(元素值,10);
if(参数[0]==1)
currentValue+=批量大小;
如果((当前值-lotSize)>=0,则为else
currentValue-=批量大小;
元素值=当前值;
}

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

您可以在aspxtbox上设置ClientInstanceName属性

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

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

以下是aspxtbox上的所有客户端方法和事件


这种让客户端DevExpress ASPxClientTextBox正常工作的方法:

var dxc=ASPxClientControl.GetControlCollection().GetByName(“aspxtBoxClientInstanceName”)


基于以下解决方案:

ClientID应与aspxtbox控件一起使用。产品文档表明它是从TextBox继承而来的。如果这种方法不起作用,我建议还有其他东西在阻止它。也许更全面的代码片段会有所帮助?我刚刚意识到GetValue()客户机函数可能不在您的版本中。如果不是,你可以试试MyTextBox.GetText()。我讨厌
ClientInstanceName
之类的东西。它仅对基本的非嵌套控件可靠工作。。我建议改用ClientID查找。(所有DX控件通过其客户端ID将自己“添加”到
窗口
窗口[theClientId]。SetText(…)
)谢谢,这是我需要的。
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

}