【问题标题】:jQuery UI class dissapears on button even though .button() is set in codebehind?即使 .button() 在后面的代码中设置,jQuery UI 类也会在按钮上消失?
【发布时间】:2013-07-25 10:33:26
【问题描述】:

我开始为此烦恼。

我试图在我的常规按钮上附加 jQuery UI 的按钮外观,但是它没有被附加。甚至没有上课..

<asp:UpdatePanel ID="CartUpdPanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">
    <button runat="server" ID="CheckoutCartButton" CausesValidation="False" EnableViewState="False">Checkout</button>
    <Triggers>
        <asp:PostBackTrigger ControlID="CheckoutCartButton" />
    </Triggers>
</asp:UpdatePanel>

我希望按钮有一个辅助图标。我通常知道如何做到这一点。但是我遇到了问题..

这是我的购物车的结帐按钮(在我想让它看起来花哨之前,我的禁用工作正常),并在它背后的代码中检查您是否有足够的信用来结帐,启用/禁用按钮.

我无法在 ascx 文件中创建按钮,因为它会覆盖按钮的禁用状态,使其启用:

ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "disable button", "console.log('disabled'); $('#" + CheckoutCartButton.ClientID + "').button({ icons: { secondary: 'ui-icon-circle-arrow-e' }, disabled: true });", true);

我尝试使用更新面板的 id 作为控制,但没有进一步成功。在写这篇文章时,我认为这是一个页面生命周期问题,因为正在检查购物车信用 OnInit。但是即使我把它改成PageLoad,也没什么区别。

有没有聪明人看到我的问题?

【问题讨论】:

  • 签入生成的 html 按钮 ID - 通常 asp.net 将容器 ID 添加到控件 ID。
  • 而且,在更新面板的回发时,您需要重新应用 javascript。
  • @VikciaR 我正在使用 ClientID 来防止 asp.net 将其更改为奇怪的 id,而问题仅在第一页访问时出现。回发后它实际上更改为右键..
  • @Blade0rz 为什么要从标题中删除 C#,因为它是问题的主要部分?

标签: c# javascript asp.net jquery-ui


【解决方案1】:

您只是附加到错误的方法。

请使用ScriptManager.RegisterStartupScript,而不是ScriptManager.RegisterClientScriptBlock

另外,将您的脚本用$(function () { }) 括起来,以便在页面完全加载时执行。

应该可以解决你的问题。

【讨论】:

  • UpdatePanel 刷新后会怎样?
  • 我不记得了,因为我已经在 MVC 上工作了一段时间。你介意测试一下吗?
  • 是的,谢谢,我自己得出了这个结论,正准备回答我自己的问题;)
  • @VikciaR Updatepanel 刷新不会成为问题,因为被调用的类型是更新面板而不是页面。如:ScriptManager.RegisterStartupScript(CartUpdPanel, CartUpdPanel.GetTy.... CartUpdPanel 是更新面板!
  • 不,我的意思是在 UpdatePanel 之后你需要重新应用 jquery.button。怎么做? stackoverflow.com/questions/256195/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
相关资源
最近更新 更多