【问题标题】:AutoPostBack conflict with jQueryAutoPostBack 与 jQuery 冲突
【发布时间】:2011-05-04 18:50:08
【问题描述】:

我想做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: 此方法有效,但消息/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);
            }
    }

【问题讨论】:

  • 我最终改变了几个 div 来解决我的自动回发问题

标签: jquery asp.net checkbox autopostback


【解决方案1】:

对于服务器控件,您可以同时拥有客户端代码和服务器逻辑。如果你打算只显示那个 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)" />

【讨论】:

  • @ComatoesDuck 在您的第二种方法中,除了一件事之外,您拥有一切权利。 onclick="displayDiv(checked)" 应该是 onclick="displayDiv(this)"
  • 这绝对让它出现了。现在的问题是消息显示的时间不够长。我试过.show(4000),但什么也没出现。
【解决方案2】:

使用该 css 创建一个标签

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

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

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

虽然真的为什么不把它作为客户调用,除非你需要做更多的事情?

【讨论】:

  • 我很想把它留作客户电话,我试过了,但没用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多