簡體   English   中英

無法通過JavaScript中的ID獲取值文本框

[英]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(!),但是通常的原因是idname屬性之間的混淆。 document.getElementByIdid屬性一起使用,但人們傾向於認為它與輸入字段上的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM