3

只是我试图将一个文本框“txtPersonId”的客户端 ID 传递给客户端单击事件,以便我可以遍历该文本框控件并将其 jQuery 包装器传递给 loadePerson() 函数。

这就是我在 aspx 标记中标记它的方式:

<asp:Button ID="btnSearch" runat="server" Text="ARA" OnClientClick="loadPerson(jQuery('#<%=txtPersonId.ClientID %>'))"/>

但是当我渲染它时,

<%=txtPersonId.ClientID %>

占位符保持原样,不会被呈现控件的客户端 ID 替换。

知道为什么会发生这种情况,我应该如何克服它?

4

2 回答 2

4

当我遇到这样的问题时,我求助于将整个表达式包装在括号中并将结果构建为字符串。我认为这是因为解析器无法识别嵌入在字符串属性中的渲染块语法。

 <asp:Button ID="btnSearch" runat="server" Text="ARA"
      OnClientClick='<%= "loadPerson(jQuery(\"#" + txtPersonId.ClientID + "\"))" %>' />

我早就开始将我的 javascript 与我的标记完全分开,所以我可能对确切的细节有点模糊。如果您想将 javascript 与标记分开,您可以在脚本块中添加带有显式或相对 DOM 引用的处理程序。在 id 上使用“ends with”选择器匹配消除了查找显式 id 的需要,尽管您也可以这样做——下面的示例显示了这两种样式。

 <script type="text/javascript">
      $(function() {
          $('#' + '<%= btnSearch.ClientID %>').click( function() {
                loadPerson( $('input[id$=txtPersonId]') );
          });
      });
 </script>
于 2010-06-19T22:53:47.613 回答
0

我不知道它对您的 LoadPerson 有什么作用,但是如果您想在 Jquery 中为您的点击事件编写一个函数,您可以执行以下操作:

'#'+ '<%=txtPersonId.ClientID %>' 来处理你的txtbox ID 你可以为你的按钮做同样的事情 $('#' + '<%=btnSearch.ClientID%>').click(function() {//点击事件过程});

于 2010-06-19T22:43:14.277 回答