AutoPostBack与jQuery冲突

问题描述:

我想做this但在asp.net中。我怎么会在asp.net /后面的代码中写这个?我已经有AutoPostBack与jQuery冲突

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

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

,所以我需要在剩下的帮助填充。尽管如此,非常感谢!

更新2: 此方法的工作原理,但消息/ 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); 
      } 
    } 
+0

我结束了周围几个div改变来解决我的AutoPostBack问题 – ComatoseDuck 2011-05-16 22:20:45

您可以同时为客户端代码和服务器逻辑进行服务器控制。如果该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)" /> 
+0

请看我的编辑最高 – ComatoseDuck 2011-05-05 21:15:31

+0

@ComatoseDuck的想法是这样的http://jsfiddle.net/TYbzN/ – 2011-05-06 12:31:27

+0

@ComatoesDuck在你的第二种方法,你有一切权利,但一件事。 'onclick =“displayDiv(checked)”'应该是'onclick =“displayDiv(this)”'。 – 2011-05-06 12:51:54

创建与CSS

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

然后在您的支票更改事件中设置代码

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

虽然真的,为什么不把它作为一个客户端的电话,除非你需要做的比这更多?

+0

我很想把它作为一个客户电话,我试过了,但它没有工作 – ComatoseDuck 2011-05-05 14:02:12

+0

什么没有工作? – Chad 2011-05-05 15:56:17