[英]Unable to get value Textbox by id in javascript
我有文本框,它的值可以說。 我在文本框“ 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。 那么,是否可以在向導控件中找到控件並獲取設置值?
獲取控件的ID,如下所示
var enteredAmount = document.getElementById('<%=txtAmount.ClientId%>').value;
不能肯定地說您沒有引用HTML(!),但是通常的原因是id
和name
屬性之間的混淆。 document.getElementById
與id
屬性一起使用,但人們傾向於認為它與輸入字段上的name
使用,但不適用於輸入字段(IE上的getElementById
損壞 )。
(要記住的另一件事是, id
值在整個頁面上必須是唯一的,但是從您引用的ID來看,我懷疑您在這方面還可以。)
更新 :如果您使用id
則可以使用:
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>
如果您使用Asp.Net 4.0,並且您的文本框在整個頁面上都是唯一的,則可以在文本框的屬性中添加ClientIDMode =“ Static”
<asp:TextBox ID="txtAmount" runat="server" Width="250px" ClientIDMode="Static"></asp:TextBox>
正如TJ提到的,我們確實需要查看您的html代碼,而無需看到它,可能是您正在尋找elements屬性。
因此,查找已經存在的元素
var element = document.getElementById('product');
一旦有了元素,就可以查詢其屬性
var price = element.getAttribute('price');
如果其為“ ASP.net服務器控件”,則您必須這樣做:
var originalPrice = document.getElementById('<%=hdnSelectedProductPrice.ClientID %>').value;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.