我有一个带有文本框和按钮的内容页(使用母版页)。我希望按钮在执行任何其他操作之前先调用一些 javascript。现在我只是在测试 javascript,所以这是一个粗略的草稿。
问题是我的标记被改变了,所以客户看不到所有的引号。引号正在转换为 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>
Get 改成这样:
<input type="submit" name="ctl00$ctl00$cphBody$cphMainContent$btnTestAdd"
value="Add"
onclick="CheckFirstAlphaNum(document.getElementById("<%= txtInputTopics.ClientID %>").val);"
id="cphBody_cphMainContent_btnTestAdd" />
为什么?
最佳答案
那是因为它们应该是 HTML 编码的。要在由引号分隔的属性值内包含引号,必须对其进行 HTML 编码。客户端会很好地看到引号。
您的问题是您试图在具有 <%= txtInputTopics.ClientID %>
的控件的属性内使用服务器代码标记 ( runat="server"
) .代码在 HTML 属性中按字面意思结束,而不是将客户端 ID 值放在属性中。
您需要另一种方法将值放入属性中,例如使用数据绑定(bind)表达式。参见示例:https://stackoverflow.com/a/1393407/69083
关于javascript - 我的标记中的引号替换为 html 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30303578/