AutoPostBack与jQuery冲突

时间:2011-05-04 18:50:08

标签: jquery asp.net checkbox autopostback

我想做this但是在asp.net中。我将如何在asp.net /后面的代码中写这个?我已经

protected void chkBox_CheckedChanged(object sender, EventArgs e)
{
    if (chkBox.Checked){}
    else{}
}

<asp:Checkbox ID="chkBox" AutoPostBack="True" runat="server"
      onCheckedChanged="chkBox_CheckedChanged" />

所以我需要帮助填补其余部分。说真的,非常感谢!

更新2: 此方法有效,但message / div显示的时间不足以读取文本。发现它是由于AutoPostBack="true"。 AutoPostBack完成后如何调用该事件(我猜这是我解决问题所需要的)?

function displayDiv(checkbox) {
            if (checkbox.checked) {
                $("#message1").stop(true, true).show().fadeOut(10000);
                $("#message2").hide();
            }
            else {
                $("#message1").stop(true, true).hide();
                $("#message2").stop(true, true).show().fadeOut(10000);
            }
        }


<asp:CheckBox ID="chkNotifyMe" AutoPostBack="True" runat="server"   OnCheckedChanged="chkNotifyMe_CheckedChanged" onclick="displayDiv(this)" /> 
<div id="message1" class="message" ><span>Successfully <small></small></span></div><br />
<div id="message2" class="message" ><span>Removed<small></small></span></div>

(所有css都是一样的)

如此接近我可以尝到它:D再次感谢!

最终解决方案 好吧,我把它添加到我的页面,通过jQuery调用AutoPostBack,发布后,显示我的消息

function pageLoad() {
            <%# autoLaunchJS %>
             $("#chkNotifyMe").click(chkNotifyMe_clicked);
        }
function chkNotifyMe_clicked(){
    var add = $get("chkNotifyMe").checked == true;
    PageMethods.WishList(add, <%#ID%>, OnSucceeded, OnFailed);
    }

    function OnSucceeded(){
        refreshStartPage();
        if($get("chkNotifyMe").checked){
                    $("#messageSuccess").stop(true, true).show().fadeOut(5000);
                    $("#messageRemove").hide();
        }
        else{
            $("#messageSuccess").stop(true, true).hide();
            $("#messageRemove").stop(true, true).show().fadeOut(5000);
            }
    }

2 个答案:

答案 0 :(得分:2)

您可以同时拥有服务器控件的客户端代码和服务器逻辑。如果你想要做的那个div的显示,那么它是纯粹的视图逻辑,它肯定与javascript和回发到服务器并刷新视图是浪费。

您可以稍微更改您的javascript来执行此操作

function displayDiv(checkBox) {
        if (checkBox.checked) {
                            $("#message1").stop(true,true).show().fadeOut(4000);
            $("#message2").hide();
        }
        else {
            $("#message1").stop(true,true).hide();
            $("#message2").stop(true,true).show().fadeOut(4000);
        }

    }

<asp:Checkbox ID="chkBox" AutoPostBack="True" runat="server"
      onCheckedChanged="chkBox_CheckedChanged" onclick="displayDiv(this)" />

答案 1 :(得分:1)

使用该css

创建标签
<asp:Label id="lblChkchnged" runat="server" CssClass="message" Visible="False" />

然后在您的检查更改事件中设置代码

lblChkchnged.visible = true;
lblChkchnged.text = chkBoc.Checked ? "Checked" : "Unchecked";

虽然为什么不把它留作客户电话,除非你需要做更多的事情呢?