如何从C#调用Jquery函数

时间:2014-03-06 05:53:37

标签: c# jquery asp.net

我想在执行一些代码后淡出和删除div。使用按钮的onclientclick属性时,这个JQuery函数工作正常。但是,无法从c#中调用它。

JS:

function Confirm()
{
 $(".saved").fadeIn(500).fadeOut(500);
}

C#:

protected void btnsave_click(object sender, Eventargs e)
{
  //some code
  upd.update();
  ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "Confirm", 
   "<script type='text/javascript'>Confirm();</script>", true);
}

HTML:

<asp:updatepanel id="upd" runat="server" updatemode="conditional">
 <triggers>
  <asp:asyncpostbacktrigger controlid="btnsave" eventname="click"/>
 </triggers>
 <contenttemplate>
  <div style="position:relative">
    <span class="saved">Record Saved</span>
    <asp:gridview....../>
  </div>
  <asp:button id="btnsave" runat="server" text="save" onclick="btnsave_click"/>
 </contenttemplate>
</asp:updatepanel>

CSS:

.saved
{
  position:absolute;
  background:green;
  margin:0 auto;
  width:100px;
  height:30px;
  visibility:hidden;
}

3 个答案:

答案 0 :(得分:7)

C#

protected void btn_click(object sender, Eventargs e)
{
    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "Confirm();", true);
}

JS:

<script>
   function Confirm()
   {
      $(".saved").fadeIn(500).fadeOut(500);
   }
</script>

编辑改进代码

C#

protected void btn_click(object sender, Eventargs e)
{
    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "Confirm();", true);
}

JS:

<script>
    $(document).ready(function () {

       function Confirm() {
           $(".saved").fadeIn(500).fadeOut(500);
       };
    });
</script>

答案 1 :(得分:1)

使用异步回发时,最好了解您可以在客户端实际处理的事件(aspx文件)。

如果你想在异步回发后执行一些客户端函数(jquery,javascript),我建议在客户端使用pageLoaded事件。所以你的javascript将如下所示:

function pageLoad(sender, args) { 
    $(".saved").fadeIn(500).fadeOut(500);
}

有关详细信息,请参阅常见方案的事件订单部分的this MSDN页面。

希望这有帮助


在评论后编辑以添加过滤器示例

要根据引发事件的元素过滤pageLoad事件中的逻辑,如this MSDN页面中所述,在动画面板部分,您可以执行此操作像这样的东西:

var postbackElement;

function beginRequest(sender, args) {
    postbackElement = args.get_postBackElement();
}
function pageLoaded(sender, args) {
    if (typeof(postbackElement) === "undefined") {
        return;
    } 
    else if (postbackElement.id.toLowerCase().indexOf('btnsave') > -1) {
        $(".saved").fadeIn(500).fadeOut(500);
    }
}

答案 2 :(得分:0)

试试这个......

ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "Confirm();", true);