簡體   English   中英

Javascript代碼未被執行

[英]Javascript code not being executed

我有一個嵌套的ListView(主/細節)問卷,在這篇文章中描述:內部列表項必須調用帶有三個參數的服務器方法。 多虧了你們中的幾個,我擁有可以正確生成JavaScript的代碼; 但是,該代碼實際上並未觸發。 這是內部列表視圖的聲明:

<asp:ListView ID="lstAnswers" runat="server" DataKeyNames="QuestionID" OnItemDataBound="lstAnswers_ItemDataBound">
      <LayoutTemplate>
        <tr id="ItemPlaceholder" runat="server" />
      </LayoutTemplate>
      <ItemTemplate>
        <tr>
          <td style="vertical-align: top; font-weight: bold;">
            <asp:Label ID="lblPAQID" runat="server" Text='<%#Eval("ThisPAQID") %>' Visible="false" />
            <asp:Label ID="lblPAQVersion" runat="server" Text='<%#Eval("PAQVersion") %>' Visible="false" />
            <asp:Label ID="lblQuestionID" runat="server" Text='<%#Eval("QuestionID")%>' />
          </td>
          <td style="vertical-align: top;">
            <asp:Label ID="lblQuestionText" runat="server" Text='<%#Eval("Question")%>' />
          </td>
          <td style="vertical-align: top;">
            <asp:TextBox ID="txtAnswer" runat="server" Class="PAQAnswer" Text='<%#Eval("Answer")%>' />
              <script type="text/javascript">   **THIS SCRIPT IS NOT FIRING**
              var textBox = document.getElementById("txtAnswer");
              if (document.attachEvent) {
                document.attachEvent("onblur", textBox, function() {
                  SaveAnswer('<%#Eval("ThisPAQID")%>', '<%#Eval("QuestionID")%>',     window.event.target.value);
                });
              } else {
                document.addEventListener("blur", textBox, function() {
                  SaveAnswer('<%#Eval("ThisPAQID")%>', '<%#Eval("QuestionID")%>', this.value);
                }, false);
              }   
            </script>
          </td>
      </tr>
  </ItemTemplate>
</asp:ListView>

生成的代碼如下所示:

<input name="lstQuestions$ctrl0$lstAnswers$ctrl0$txtAnswer" type="text" value="2.0" maxlength="3" id="lstQuestions_ctrl0_lstAnswers_ctrl0_txtAnswer" Class="PAQAnswer" style="width:30px;" />

<script type="text/javascript">
  var textBox = document.getElementById("txtAnswer");
  if (document.attachEvent) {
    document.attachEvent("onblur", textBox, function() {
      SaveAnswer('13242', '1', window.event.target.value);
    });
  } else {
    document.addEventListener("blur", textBox, function() {
      SaveAnswer('13242', '1', this.value);
    }, false);
  }   
</script>

SaveAnswer調用中的嵌入值是正確的; 但是,我不知道如何將輸入語句綁定到JavaScript。 可能非常簡單,但我看不到...。

這行看起來像問題:

var textBox = document.getElementById("txtAnswer");

txtAnswer不是控件的實際ID,因此您的腳本找不到它。 輸入的ID是lstQuestions_ctrl0_lstAnswers_ctrl0_txtAnswer

你應該嘗試類似的東西:

var textBox = document.getElementById("<%= txtAnswer.ClientID %>");

這將轉化為:

var textBox = document.getElementById("lstQuestions_ctrl0_lstAnswers_ctrl0_txtAnswer");

編輯:為什么不這樣做呢?

<asp:TextBox ID="txtAnswer" runat="server" Class="PAQAnswer" Text='<%#Eval("Answer")%>' onBlur="SaveAnswer('<%#Eval("ThisPAQID")%>', '<%#Eval("QuestionID")%>', this.value);" />

嘗試附加這樣的事件:

var textBox = document.getElementById("txtAnswer");
if (textBox.attachEvent) {
  textBox.attachEvent("onblur", function() {
    SaveAnswer('13242', '1', window.event.target.value);
  });
} else {
  textBox.addEventListener("blur", function() {
    SaveAnswer('13242', '1', this.value);
  }, false);
}

PS:我認為Victor也正確, txtAnswer不是您節點的實際ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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