在ASP.NET / C#页面的回发上调用Javascript / JQuery函数

时间:2011-04-28 20:35:06

标签: c# javascript jquery asp.net postback

我正在使用一个名为“Tab Slide Out”的JQuery插件,链接在这里:http://wpaoli.building58.com/2009/09/jquery-tab-slide-out-plugin/

我正在尝试将其用作反馈技术。在幻灯片上有一个表单和一个提交按钮。现在当你点击提交时,它当然会导致回发,页面加载,但反馈窗口被设置回其关闭状态。我希望窗口在回发时自动打开。以下是使用该插件的网站示例,并使其按照我希望的方式运行:http://thedemo.ca/

现在我注意到在脚本中他们在初始页面加载时有这个:

jQuery('.slide-out-div').tabSlideOut({
  tabHandle: '.handle',
  pathToTabImage: 'typo3conf/ext/stw_jquery_feedback/images/feedback-btn-right.png', 
  imageWidth: '32px',
  imageHeight: '167px',
  tabLocation: 'right',
  speed: 300,
  action: 'click',
  topPos: '200px',
  fixedPosition: true,
  onLoadSlideOut: false
});

然后从提交按钮回发:

jQuery('.slide-out-div').tabSlideOut({
  tabHandle: '.handle',
  pathToTabImage: 'typo3conf/ext/stw_jquery_feedback/images/feedback-btn-right.png', 
  imageWidth: '32px',
  imageHeight: '167px',
  tabLocation: 'right',
  speed: 300,
  action: 'click',
  topPos: '200px',
  fixedPosition: true,
  onLoadSlideOut: true
}); 

请注意onLoadSlideOut更改的最后一个选项。这怎么可能?据说我认为最简单的解决方案就是调用tabHandle,然后滑出标签。

所以我想我的真正问题是,如何调用点击.handle。

以下是我的代码测试环境的链接:http://jakeism.info/test/

2 个答案:

答案 0 :(得分:2)

他们正在动态渲染脚本。在asp.net中,最简单的方法是在你的aspx / ascx中使用:

<script type="text/javascript">
jQuery('.slide-out-div').tabSlideOut({
  tabHandle: '.handle',
  pathToTabImage: 'typo3conf/ext/stw_jquery_feedback/images/feedback-btn-right.png', 
  imageWidth: '32px',
  imageHeight: '167px',
  tabLocation: 'right',
  speed: 300,
  action: 'click',
  topPos: '200px',
  fixedPosition: true,
  onLoadSlideOut: <% Response.Write(Page.IsPostBack ? "true" : "false") %>
}); 
</script>

请注意onLoadSlideOut的scriptlet。现在这个逻辑可能不会完全符合你的要求-e.g.任何回发都会导致它被渲染打开。所以,只需用适当的条件替换条件。

更好的方法是使用ajax发布到WebService,而不是发布整个页面,因此根本没有回发。然后在让用户知道已收到他们的反馈后,干净地关闭滑动。

答案 1 :(得分:0)

我会说你最好的选择是通过ajax调用来提交,然后你可以做一些客户端验证等等。如果成功你可以将它重新插入。世界就是你的牡蛎。

我推荐这条路线,好像有人在没有启用javascript的情况下访问您的网站时,功能将受到限制,并且您的回发方法将正常工作(假设如果未在页面加载时隐藏,则会自动显示该框)。