AutoPostBack конфликтует с JQuery - PullRequest
1 голос
/ 04 мая 2011

Я хочу сделать это , но в 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 Еще раз спасибо!

ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ Хорошо, я добавил это на свою страницу, чтобы вызывать AutoPostBack через jQuery, а после его публикации отображать мое сообщение

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 ]

2 голосов
/ 04 мая 2011

Вы можете одновременно использовать клиентский код и логику сервера для управления сервером.Если отображение этого 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 голос
/ 04 мая 2011

Создайте метку с этим css

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

, а затем установите в проверяемом измененном событии код

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

Хотя на самом деле почему бы просто не оставить его как вызов клиента, если только вынужно сделать больше, чем это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...