2015-05-18 58 views
2

我有一個內容頁面(使用母版頁)與一個文本框和一個按鈕。我希望按鈕在做任何事情之前調用一些JavaScript。現在我只是測試JavaScript,所以這是一個粗略的草案。我的標記中的引號替換爲html實體?

問題是我的標記正在改變,所以客戶端看不到所有的引號。引號正在轉換爲HTML實體字符串。

所以在這個代碼的按鈕:

<asp:Content ID="Content1" ContentPlaceHolderID="cphMainContent" runat="server"> 
    <div> 
     <asp:TextBox ID="txtInputTopics" 
      runat="server" TextMode="MultiLine" 
      Width="335px" Height="250px" 
      CssClass="mediumFontTextbox"/> 
     <asp:Button ID="btnTestAdd" 
      runat="server" Text="Add" 
      OnClientClick='CheckFirstAlphaNum(document.getElementById("<%= txtInputTopics.ClientID %>").val);' /> 
    </div> 
</asp:Content> 

獲取已經改變這樣:

<input type="submit" name="ctl00$ctl00$cphBody$cphMainContent$btnTestAdd" 
    value="Add" 
    onclick="CheckFirstAlphaNum(document.getElementById(&quot;&lt;%= txtInputTopics.ClientID %>&quot;).val);" 
    id="cphBody_cphMainContent_btnTestAdd" /> 

爲什麼?

+0

具有的前一個兄弟報價改變不是問題。這是沒有解析的「<%=」的東西作爲ASP的問題。 – Quentin

回答

2

這是因爲它們應該是HTML編碼。要在由引號分隔的屬性值中包含引號,它必須是HTML編碼的。客戶會看到引號就好了。

您的問題是,您嘗試在runat="server"控件的屬性中使用服務器代碼標記(<%= txtInputTopics.ClientID %>)。代碼直接在HTML屬性中結束,而不是將客戶端ID值置於屬性中。

您需要另一種將值放入屬性的方法,例如使用數據綁定表達式。例如見:https://stackoverflow.com/a/1393407/69083

+0

我必須在其他地方發生錯誤。當我看到HTML標籤而不是引號時,我很緊張。我可以正確設置onclick:btnTestAdd.OnClientClick =「CheckFirstAlphaNum($(」+ txtInputTopics.ClientID +「).val(),'Topic Name')」;.我的代碼正在工作。謝謝。 –

0

由Guffa說你需要另一種方法來獲取輸入節點,你可以嘗試讓按鈕

//source: http://www.w3schools.com/dom/prop_element_previoussibling.asp 
function get_previoussibling(n) { 
    x=n.previousSibling; 
    while (x.nodeType!=1) { 
    x=x.previousSibling; 
    } 
    return x; 
} 

function CheckFirstAlphaNum(element) { 
    var inputEl = get_previoussibling(element); 
    var value = inputEl.value; 
    // do your stuff 
} 

HTML

<asp:Content ID="Content1" ContentPlaceHolderID="cphMainContent" runat="server"> 
    <div> 
    <asp:TextBox ID="txtInputTopics" 
     runat="server" TextMode="MultiLine" 
     Width="335px" Height="250px" 
     CssClass="mediumFontTextbox"/> 
    <asp:Button ID="btnTestAdd" 
     runat="server" Text="Add" 
     OnClientClick="CheckFirstAlphaNum(this);" /> 
    </div> 
</asp:Content>