【问题标题】:How to switch css property according to some condition如何根据某些条件切换css属性
【发布时间】:2012-12-20 08:03:49
【问题描述】:

我有以下单选按钮列表:

<asp:Panel ID="pnl_select_sign" runat="server" Visible="false" Style="text-align: right">
        <asp:RadioButtonList ID="rb_select_sign" runat="server" AutoPostBack="true" RepeatDirection="Horizontal"
            OnSelectedIndexChanged="rb_select_sign_SelectedIndexChanged" CausesValidation="false"
            AppendDataBoundItems="true">
            <asp:ListItem Selected="True" Value="0">Normal</asp:ListItem>
            <asp:ListItem Value="1">Electronic</asp:ListItem>
        </asp:RadioButtonList>
    </asp:Panel>

我想更改css 属性overflow-y

来自overflow-y :auto;给overflow-y :hidden;

对于带有id = wrap_form的div

如果我选择ListItem with Value = 1;


来自 FireBug

<td>
<input id="ctl00_ContentPlaceHolder1_rb_select_sign_0" type="radio" onclick="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$rb_select_sign$0\',\'\')', 0)" value="0" name="ctl00$ContentPlaceHolder1$rb_select_sign">
<label for="ctl00_ContentPlaceHolder1_rb_select_sign_0">Normal</label>
</td>
<td>
<input id="ctl00_ContentPlaceHolder1_rb_select_sign_1" type="radio" checked="checked" value="1" name="ctl00$ContentPlaceHolder1$rb_select_sign">
<label for="ctl00_ContentPlaceHolder1_rb_select_sign_1">Electronic</label>
</td>

【问题讨论】:

    标签: javascript jquery asp.net css radiobuttonlist


    【解决方案1】:

    请注意,如果您使用建议的 javascript 答案,则 css 将在页面回发后恢复正常。您已经在 RadioButtonList 上使用了回发,所以我想您可以改为更改服务器端的样式。

    更新

    把这个放在你的方法处理列表中的项目选择变化中:

    protected void rb_select_sign_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (rb_select_sign.SelectedValue == "1")
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "styleChangeScript", "<script type='text/javascript'>var divToChange = document.getElementById('wrap_form'); if(divToChange) { divToChange.style.overflowY = 'hidden' }</script>", false);
        }
        //the rest of the original code of this method should be here
        //...
    }
    

    要使其在单击其他按钮等导致回发时起作用,您应该将相同的代码行放在您页面的 Page_Load 事件中(或者将其放在单独的方法中并从两个地方调用它)。

    【讨论】:

    • 请告诉我 div wrap_form 是由您放入页面的 aspx 还是自动生成的(您在 aspx 中看不到它)。
    • 在母版页中:&lt;div id="wrap_form"&gt; &lt;asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"&gt; &lt;/asp:ContentPlaceHolder&gt; &lt;/div&gt;
    【解决方案2】:

    这样的事情应该可以工作:

    $('input[id^="ctl00_"]').click(function() {
     if ($(this).val() == 1) {
      $('#wrap_form').css('overflow-y', 'hidden');
     }
    })
    

    这里是jsfiddle

    【讨论】:

    • 我做了一个小改动,再检查一遍
    • 确保您在您的页面(或母版页)中引用了 jQuery 库。
    • 我引用了那个文件,我认为问题是控制回发
    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 2022-07-29
    • 1970-01-01
    • 2020-06-11
    • 2020-10-27
    • 2022-09-23
    • 2015-04-24
    • 2014-05-14
    相关资源
    最近更新 更多