Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t访问中继器中自动完成的文本框_Javascript_Asp.net_Ajax - Fatal编程技术网

Javascript Can';t访问中继器中自动完成的文本框

Javascript Can';t访问中继器中自动完成的文本框,javascript,asp.net,ajax,Javascript,Asp.net,Ajax,我正在尝试使用一个小javascript脚本访问中继器中的文本框。当用户从列表中选择一个选项时,ajax自动完成会调用它 它无法工作,因为javascript无法访问文本框(ID=ContactID)。原因是因为它在中继器中。那么,如何修改脚本以访问中继器中的特定文本框呢 <script type="text/javascript" > function OnContactSelected(source, eventArgs) { $get('<%# Conta

我正在尝试使用一个小javascript脚本访问中继器中的文本框。当用户从列表中选择一个选项时,ajax自动完成会调用它

它无法工作,因为javascript无法访问文本框(ID=ContactID)。原因是因为它在中继器中。那么,如何修改脚本以访问中继器中的特定文本框呢

<script type="text/javascript" >
    function OnContactSelected(source, eventArgs) {
    $get('<%# ContactID.ClientID %>').value = eventArgs.get_value();
    }
</script>

函数OnContactSelected(源、事件参数){
$get(“”).value=eventArgs.get_value();
}
中继器代码:

<asp:repeater ID="itemsRepeater" 
      OnItemDataBound="itemsRepeater_ItemDataBound" 
      runat="Server">
   <itemtemplate>
      <tr>
         <td>
          <asp:RadioButtonList runat="server"  DataSource="<%#         ((Outlet)Container.DataItem).OutletInformations %>" DataValueField="DateOfDelivery" DataTextField="DateOfDelivery" />        
         </td>
         <td>
            <asp:TextBox ID="ContactID" runat="server"/>
         </td>
      </tr>
   </itemtemplate>
</asp:repeater>

您的问题似乎是您实际上没有针对任何“特定”文本框。对于中继器的每一行,都会有一个这样的文本框,而且由于数据绑定的性质,这些文本框总是只在运行时可用

要解决这个问题,您需要做以下两件事之一。更难但更完整的答案是使用中继器的onItemDatabound事件并从该事件的eventArgs中提取子控件。如果您想修改codebehind中的子控件,这将是您唯一的选择

但是,由于您是从javascript执行此操作的,并且(表面上)希望在每个文本框上运行此自动完成函数,因此只需为表行指定一个类,并将呈现的输入标记作为其目标:

.aspx:

<itemtemplate>
      <tr>
         <td>
          <asp:RadioButtonList runat="server"  DataSource="<%#         ((Outlet)Container.DataItem).OutletInformations %>" DataValueField="DateOfDelivery" DataTextField="DateOfDelivery" />        
         </td>
         <td class="autocomplete">
            <asp:TextBox ID="ContactID" runat="server"/>
         </td>
      </tr>
   </itemtemplate>

JS:


函数OnContactSelected(源、事件参数){
变量字段=document.querySelectorAll(“.autocomplete input”);
对于(变量i=0;i
您的问题似乎是您实际上没有针对任何“特定”文本框。对于中继器的每一行,都会有一个这样的文本框,而且由于数据绑定的性质,这些文本框总是只在运行时可用

要解决这个问题,您需要做以下两件事之一。更难但更完整的答案是使用中继器的onItemDatabound事件并从该事件的eventArgs中提取子控件。如果您想修改codebehind中的子控件,这将是您唯一的选择

但是,由于您是从javascript执行此操作的,并且(表面上)希望在每个文本框上运行此自动完成函数,因此只需为表行指定一个类,并将呈现的输入标记作为其目标:

.aspx:

<itemtemplate>
      <tr>
         <td>
          <asp:RadioButtonList runat="server"  DataSource="<%#         ((Outlet)Container.DataItem).OutletInformations %>" DataValueField="DateOfDelivery" DataTextField="DateOfDelivery" />        
         </td>
         <td class="autocomplete">
            <asp:TextBox ID="ContactID" runat="server"/>
         </td>
      </tr>
   </itemtemplate>

JS:


函数OnContactSelected(源、事件参数){
变量字段=document.querySelectorAll(“.autocomplete input”);
对于(变量i=0;i
您能分享一些asp.net页面标记吗您能分享一些asp.net页面标记吗