Javascript与Asp.net runat = server属性冲突

时间:2012-06-22 19:51:33

标签: javascript asp.net html runatserver

我正在运行一些带有几个html控件的java脚本。一切正常。

除非我将runat =“server”属性添加到html控件,因此我可以在后面的代码中访问它,java脚本函数不起作用。这是常见的事吗?有一个解决方案是使用java脚本运行runat =“server”属性吗?

或者如何使用run at server属性在后面的代码中访问我的Html控件?

混淆。

3 个答案:

答案 0 :(得分:2)

这很有可能发生,因为您的标记看起来像这样:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div runat="server" id="myDiv">
    </div>
</asp:Content>

即。您正在使用MasterPage或其他充当INamingContainer的内容。这导致在标记中写出的ID看起来像这样:

<div>
    <div id="ContentPlaceHolder1_myDiv">
    </div>
</div>

如果您使用的是asp.net 4,则可以通过添加myDiv来更改clientidmode="Static"的标记,然后您将获得:

<div>
    <div id="myDiv">
    </div>
</div>

意味着您的javascript会再次运行。如果您使用的是早期版本的asp.net,则需要按照SHAKKIR SHABBIR的建议进行操作,并使用<%=myDiv.ClientId%>引用javascript中的元素,以便获得asp的ID的“重命名”版本。净产生。

答案 1 :(得分:1)

好的,runat =“server”没问题。

您需要修改javascript。

如果您的控件输入为:

<input id="control_ID" runat="server" />

使用&lt;%= control_ID.ClientId%&gt;在javascript中引用控件

它会正常工作。但是,如果这不起作用,请共享您的代码。我会解决的!

答案 2 :(得分:0)

<img alt="Calendar" onmouseover="javascript:this.style.cursor='hand';"
                    src="~/images/Calander_0.png" 
                    id="ImgCalender"  
                    onclick ="javascript:showCalendarControl('<%=txtAppointmentDate.ClientID  %>','mm/dd/yyyy');" 
                    runat="server"  />

如果在服务器上运行,则设置JavaScript不起作用