从.ascx文件调用Javascript函数

时间:2016-01-18 10:38:19

标签: javascript c# jquery asp.net


我有一个名为'change2()'的javascript函数,它在 .ascx 页面的脚本标记中定义。
我想从 img 标签的onclick事件中调用该函数(注意:img标签也在同一页面上)。
仅对图像使用img标签是必须的 我尝试了以下所有方法,但不幸的是它对我不起作用。

Test.ascx

libB.cpp

第二种方式:

    <script language="javascript" type="text/javascript">
        function change2() {
            alert("Hi");
        } 
    </script>




  <table>
        <tr>
          <td class="list">
               Most liked
          </td>
          <td>
              <img id="imgLkU" src='<%# WebHelper.GetBaseURL(Request) + "/images/slide_btn_down.png"%>'class="icon_right_panel" runat="server" onclick="change2();" alt="Slider" />
           </td>
          </tr>
     </table>

请告诉我你从同一页面调用javascript函数的建议。

4 个答案:

答案 0 :(得分:1)

正如我所看到的,img ID为imgLkU,因此,您可以在“{1}}标记本身中包含调用”,而不是“从外部”订阅该事件,即使用$.on,(或$.click)这样做:

img

$.on('click','#imgLkU', function() { change2(); });
// or equivalent  $.on('click','#imgLkU', change2);

在同一个脚本标记中定义$.('#imgLkU').click(function() { change2(); }); // or equivalent $.('#imgLkU').click(change2); 后立即执行。

我还建议您在inmediately invoked function expression内执行change2定义和事件订阅,以避免污染全局javascript命名空间。

change2

答案 1 :(得分:0)

因为你的元素都有runat="server",所以它们的onclick属性是为后端代码actionlistener保留的,后者将在回发时执行。

保留onClientClick属性,以便您仍然可以将javascript“侦听器”附加到客户端onclick

请记住,如果false侦听器也已连接,则从onClientClick处理程序返回onclick将阻止回发发生。 (onClientclick在启动回发之前执行)

试试这个:

<img id="imgLkU" src='<%# WebHelper.GetBaseURL(Request) + "/images/slide_btn_down.png"%>'class="icon_right_panel" runat="server" onclientclick="change2();" alt="Slider" />

答案 2 :(得分:0)

可以从document.ready函数直接调用以下函数,如

$(function () {
    $('#imgLkU').click(function () {
        //do what ever you want
    })
});

答案 3 :(得分:0)

首先,取出图像上的runat="server",因为您已经在使用服务器标签来设置网址。如果您仍想使用runat="server",可以:

1:将您的img更改为<asp:Image>代码并使用ImageSource代替srcOnClientClick代替onclick

2:在后面的代码中设置src属性。

之后,任何点击方法 - 从您的问题到所有答案 - 都应该有效。

如果仍然没有显示警告,那么就开始取出代码直到它完成并从那里开始工作......