我有文本框,它有值可以说。我在一个文本框'onblur'上调用我的javascript方法。我的职责是:
function CalculateExpectedProductPrice() {
alert("hi i called");
var originalPrice = document.getElementById('hdnSelectedProductPrice').value;
var numberOfLicenses = document.getElementById('txtNumberOfLicense').value;
var enteredAmount = document.getElementById('txtAmount').value;
alert(originalPrice);
alert(numberOfLicenses);
alert(enteredAmount);
}
我收到警告信息为“”我打电话给你。“但不是更远。”
但有些我没有得到这些控制的价值。
* 已编辑: * 我的HTML是:
<asp:HiddenField ID="hdnSelectedProductPrice" runat="server" />
<asp:TextBox ID="txtAmount" runat="server" Width="250px"></asp:TextBox>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="txtNumberOfLicense" runat="server" Width="35px" ></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtNumberOfLicense" EventName="" />
</Triggers>
</asp:UpdatePanel>
是否有任何影响主内容页面。因为脚本在内容页面和html也在同一内容页面上。也让我知道你,我使用向导控制,因为所有这些控件都驻留在向导的第二步。会产生什么影响吗?
编辑:
我认为巫师控制在这里很重要。当我启动我的firebug并查看生成的html时,它会动态地将Id分配给向导内的控件。这就是为什么javascript无法找到预期的控件。 例如,对于txtAmount文本框,它位于向导控件内,名称为:
ctl00_ContentPlaceHolder1_Wizard1_txtAmount
但当然我不想使用这个生成的Id。那么在向导控件和获取设置值中找到控制是否有任何补救措施?
答案 0 :(得分:4)
获取控件的ID,如下所示
var enteredAmount = document.getElementById('<%=txtAmount.ClientId%>').value;
答案 1 :(得分:1)
由于您没有引用HTML(!),因此无法确定,但通常的原因是id
和name
属性之间的混淆。 document.getElementById
与id
属性一起使用,但人们倾向于认为它适用于输入字段上的name
,但它没有(除了IE,getElementById
is broken)。
(要记住的另一件事是id
值必须在整个页面上都是唯一的,但是查看您引用的ID,我怀疑您在这方面没问题。 )
更新:如果您使用id
s:
HTML:
<form>
<input type='hidden' id='hdnSelectedProductPrice' value='10'>
<input type='text' id='txtNumberOfLicense' value='2'>
<input type='text' id='txtAmount' value='3'>
<br><input type='button' id='theButton' value='Click Me'>
</form>
答案 2 :(得分:0)
作为T.J.提到我们真的需要看到你的HTML代码,没有看到它可能是你正在寻找元素属性。
因此,您已经使用
查找元素var element = document.getElementById('product');
获得元素后,您可以查询其属性
var price = element.getAttribute('price');
答案 3 :(得分:0)
如果是“ASP.net服务器控件”,那么你必须这样做:
var originalPrice = document.getElementById('<%=hdnSelectedProductPrice.ClientID %>').value;
答案 4 :(得分:0)
如果您使用Asp.Net 4.0 并且您的文本框在整个页面上是唯一的,则可以在文本框的属性中添加 ClientIDMode =“Static”
<asp:TextBox ID="txtAmount" runat="server" Width="250px" ClientIDMode="Static"></asp:TextBox>