javascript - 我的标记中的引号替换为 html 实体?

标签 javascript html asp.net

我有一个带有文本框和按钮的内容页(使用母版页)。我希望按钮在执行任何其他操作之前先调用一些 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(&quot;&lt;%= txtInputTopics.ClientID %>&quot;).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/

相关文章:

javascript - 未捕获的 TypeError : obj. attr 不是函数 JS

javascript - 使用 d3.sort() 将项目放入数据集前面的数组中

html - 更改 Bootstrap 导航丸的高度

javascript - YouTube嵌入了react控件,播放onclick

asp.net - 用户在我的网站上点击确认后如何确认 Paypal express 付款?

javascript - 尝试本地数据存储时键入错误,如何启动我的网站?

javascript - 创建对象时如何处理丢失的 JSON 数据? ( typescript )

javascript - 尝试将 Controller 与 angularjs 一起使用,从 app.js 获取 Controller 代码并将其放入 Controller 文件时出错

c# - 将 asp :Image relative path (. ./../images) 替换为另一台服务器上的绝对路径

c# - 如果我有一个按钮单击事件和一个 ObjectDataSource 选择事件,哪个先触发,为什么?